A aplicação de software cURL, formalmente conhecida como "Cliente para URLs", fornece aos desenvolvedores um conjunto robusto de ferramentas para gerenciar transferências de dados. Ela opera em dois modos distintos: uma interface de linha de comando fácil de usar que atende a interações fundamentais e uma poderosa biblioteca projetada para integração sem emendas em projetos de programação.
Para entender melhor o Apidog, experimente por si mesmo clicando no botão abaixo!
Definição Formal do curl_init()
Com base no site oficial do PHP, a função curl_init inicializa uma sessão cURL e retorna um manipulador cURL para uso com as funções curl_setopt(), curl_exec() e curl_close().
Parâmetros Envolvidos
url
Se você fornecer uma URL, a opção CURLOPT_URL
será definida para o seu valor. Você também pode definir manualmente esta opção usando a função curl_setopt().
No entanto, observe que o protocolo file
está desativado pelo cURL se open_basedir
tiver sido definido.
Valores de Retorno
A função curl_init() retorna um manipulador cURL em caso de sucesso, e false
em caso de erro.
O que é um Requisição PUT?
A requisição PUT dentro do Protocolo de Transferência de Hipertexto (HTTP) atua como uma ferramenta refinada para gerenciar recursos em um servidor web. Ela se desvia de sua contraparte, a requisição GET (usada para recuperação de dados), ao visar especificamente modificações no lado do servidor.
Função das Requisições PUT
Diferentemente de sua contraparte, a requisição GET usada para recuperação de dados, uma requisição PUT foca em modificar informações no lado do servidor. Essa modificação pode englobar duas ações principais:
- Atualizando Recursos Existentes: Se um recurso (como uma conta de usuário ou um produto em um banco de dados) já existir em uma URL específica, uma requisição PUT pode ser usada para atualizar seus dados associados.
- Criando Novos Recursos: Em cenários onde um recurso não existe na URL designada, uma requisição PUT pode ser empregada para criar um novo recurso com os dados fornecidos.
Colocação de Dados
As requisições PUT geralmente transmitem dados dentro do corpo da requisição, semelhante às requisições POST. Esses dados frequentemente representam o novo ou atualizado estado do recurso sendo alvo.
Idempotência
Uma característica definidora das requisições PUT é sua natureza idempotente. Isso implica que executar uma requisição PUT várias vezes com dados idênticos produzirá o mesmo resultado. Em termos mais simples, enviar uma requisição PUT uma ou várias vezes com os mesmos dados leva ao mesmo resultado no servidor.
Casos Comuns de Uso das Requisições PUT
- Atualizando perfis ou informações de conta de usuários
- Modificando conteúdo existente em um banco de dados (por exemplo, editando um post de blog)
- Fazendo upload de um novo arquivo para um local específico no servidor
Exemplos de Código para Fazer Requisições PUT com a Função curl_init()
Aqui estão alguns exemplos de codificação em PHP que você pode consultar se desejar fazer requisições PUT com a função curl_init()
.
Exemplo 1 - Atualizando Informações do Usuário (Dados JSON)
Este exemplo atualiza as informações do perfil de um usuário em um servidor usando dados JSON.
<?php
$url = "https://www.example.com/api/users/123"; // Substitua pelo ID real do usuário
$new_email = "new_email@example.com";
$data = array(
"email" => $new_email
);
$data_json = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // Defina o método da requisição como PUT
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json); // Defina os dados PUT como JSON
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Retorne a resposta
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json', // Defina o tipo de conteúdo como JSON
'Authorization: Bearer YOUR_API_KEY' // Adicione o cabeçalho de autorização
));
$response = curl_exec($ch);
curl_close($ch);
if($response) {
echo "Perfil do usuário atualizado com sucesso!";
} else {
echo "Erro: " . curl_error($ch);
}
?>
Explicação do código:
- Definimos a URL de destino (incluindo o ID do usuário) e o novo endereço de e-mail.
- Criamos um array
$data
contendo o e-mail atualizado e o convertendo para JSON usandojson_encode
. - Inicializamos o manipulador cURL e definimos o método da requisição como PUT usando
CURLOPT_CUSTOMREQUEST
. - Definimos os dados PUT com
CURLOPT_POSTFIELDS
e configuramos o cabeçalho do tipo de conteúdo como JSON. - Adicionamos um cabeçalho de autorização com sua chave de API para acesso seguro.
- Executamos a requisição, fechamos o manipulador e verificamos se houve resposta bem-sucedida.
Exemplo 2 - Fazendo Upload de um Arquivo (Dados Brutos)
Este exemplo faz upload de um arquivo para um servidor usando dados brutos.
<?php
$url = "https://www.example.com/api/uploads";
$filename = "myfile.txt";
$file_content = file_get_contents($filename); // Ler o conteúdo do arquivo
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // Defina o método da requisição como PUT
curl_setopt($ch, CURLOPT_PUT, 1); // Ative o modo de upload PUT
curl_setopt($ch, CURLOPT_INFILE, fopen($filename, "rb")); // Defina o arquivo para upload
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filename)); // Defina o tamanho do arquivo
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Retorne a resposta
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/octet-stream' // Defina o tipo de conteúdo para dados brutos
));
$response = curl_exec($ch);
curl_close($ch);
if($response) {
echo "Arquivo enviado com sucesso!";
} else {
echo "Erro: " . curl_error($ch);
}
?>
Explicação do código:
- Definimos a URL de upload e o nome do arquivo.
- Lemos o conteúdo do arquivo usando
file_get_contents
. - Inicializamos o manipulador cURL e definimos o método da requisição como PUT.
- Ativamos o modo de upload PUT com
CURLOPT_PUT
. - Especificamos o arquivo para o upload usando
CURLOPT_INFILE
e seu tamanho comCURLOPT_INFILESIZE
. - Definimos o cabeçalho do tipo de conteúdo para indicar dados brutos.
- Executamos a requisição, fechamos o manipulador e verificamos se houve resposta bem-sucedida.
Exemplo 3 - PUT Condicional com ETag
Este exemplo demonstra uma requisição PUT condicional usando um ETag para bloqueio otimista.
<?php
$url = "https://www.example.com/api/posts/123";
$new_title = "Título Atualizado";
$etag = "some-etag-value"; // Substitua pelo ETag real
$data = array(
"title" => $new_title
);
$data_json = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); // Defina o método da requisição como PUT
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json); // Defina os dados PUT como JSON
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Retorne a resposta
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json', // Defina o tipo de conteúdo como JSON
'If-Match: ' . $etag // Adicione o ETag para a atualização condicional
));
$response = curl_exec($ch);
curl_close($ch);
if($response) {
echo "Post atualizado com sucesso!";
} else {
$error = curl_error($ch);
if (strpos($error, '412 Precondition Failed') !== false) {
echo "Atualização falhou: inconsistência de ETag (os dados podem ter sido modificados por outro usuário).";
} else {
echo "Erro: " . $error;
}
}
?>
Explicação do código:
- Definimos a URL de destino (ID do post), o novo título e o ETag recuperado do servidor.
- Criamos um array
$data
e o convertendo para JSON. - Definimos o método da requisição como PUT e incluímos os dados PUT.
- Adicionamos um cabeçalho
If-Match
com o ETag para garantir que a atualização ocorra apenas se a versão atual no servidor corresponder ao ETag. Isso evita sobrescrever alterações feitas por outro usuário (bloqueio otimista). - Verificamos a resposta por sucesso e lidamos com um erro específico (412 Precondition Failed) indicando uma inconsistência de ETag.
Nota para Lembrar
Por favor, garanta que os exemplos de código acima não sejam copiados e colados em seus IDEs, pois estão simplificados e requererão modificações adicionais para atender às necessidades da sua aplicação.
Para a documentação oficial, você pode conferir em: https://www.php.net/manual/en/book.curl.php

Acelere Seu Desenvolvimento de API cURL com Apidog
Apidog é uma plataforma sofisticada de desenvolvimento de APIs capaz de converter linhas de comando cURL em exibidas gráficas bonitas e intuitivas, facilitando o entendimento e a manipulação das APIs pelos desenvolvedores.

Não só você pode importar comandos cURL, mas também construir, depurar, simular e documentá-los como qualquer outra API! Com tanta conveniência, o Apidog pode apoiá-lo com um fluxo de trabalho ininterrupto.
Importar APIs cURL em Segundos

O Apidog suporta usuários que desejam importar comandos cURL para o Apidog. Em um projeto vazio, clique no botão roxo +
na parte superior esquerda da janela do Apidog e selecione Importar cURL
.

Copie e cole o comando cURL na caixa exibida na sua tela.

Se bem-sucedido, você deve agora ser capaz de ver o comando cURL na forma de uma requisição de API.
Inseguro sobre PHP? Gere Código Com Apidog
Se você não tem experiência anterior em programação na linguagem PHP, não tema! O Apidog possui uma funcionalidade de geração de código na qual você pode confiar, fornecendo estruturas de código para várias outras linguagens de programação.

Primeiro, localize o botão </> Gerar Código
em qualquer API ou requisição, e selecione Gerar Código do Cliente
na lista suspensa.

Em seguida, selecione PHP e encontre a seção de cURL. Você deve agora ver o código gerado para cURL. Tudo que você precisa fazer é copiá-lo e colá-lo em seu IDE (Ambiente de Desenvolvimento Integrado) e continuar desenvolvendo sua aplicação.
Conclusão
Ao dominar requisições PUT com curl_init()
, você desbloqueou uma poderosa ferramenta para interagir com servidores web. Esta função permite que você não apenas atualize recursos existentes, mas também crie novos. Seja gerenciando perfis de usuários, modificando entradas de banco de dados ou fazendo upload de arquivos, as requisições PUT oferecem um método preciso e eficiente para manipulação de dados.
Lembre-se, curl_init()
fornece uma abordagem versátil, permitindo que você especifique formatos de dados, defina cabeçalhos personalizados para comunicação segura e até mesmo gerencie cenários como atualizações condicionais e relatórios de progresso para transferências de arquivos grandes. Com esse novo conhecimento, você pode aproveitar com confiança as requisições PUT para elevar a funcionalidade e o desempenho de suas aplicações web.