Pedido GET com curl em PHP

Guia de pedidos get com cURL em PHP. Saiba mais sobre o pedido GET e como implementar um pedido GET com curl em PHP.
4 min read
curl GET Request with PHP

curl é uma ferramenta de linha de comando e uma biblioteca utilizada para transferir dados com URLs. No contexto do desenvolvimento web, curl permite aos usuários fazer pedidos e interagir com vários recursos da Internet, como sítios web e APIs, diretamente a partir da linha de comandos ou através de scripts.

curl suporta uma vasta gama de protocolos, incluindo HTTP, HTTPS, FTP e FTPS, o que o torna incrivelmente versátil para tarefas como transferências de ficheiros, recuperação de dados e integração de API. A capacidade de curl para lidar com operações complexas e enviar diferentes tipos de pedidos a tornou uma ferramenta indispensável, permitindo uma comunicação perfeita entre aplicações e servidores remotos. A sua flexibilidade e facilidade de utilização tornam-no um componente fundamental nos fluxos de trabalho de desenvolvimento web modernos.

Os pedidos GET são um componente crucial na comunicação web, concebidos para recuperar informações ou dados de um recurso específico num servidor web. Neste tutorial, você aprenderá como usar curl para fazer um pedido GET com PHP.

O que é um pedido GET

 

Um pedido GET é um método HTTP concebido para obter informações ou dados de um recurso específico num servidor web. Por exemplo, quando introduz um URL no seu navegador web e carrega enter, está a desencadear um pedido GET. O navegador faz um pedido GET ao servidor e devolve uma página web que é apresentada no navegador.

O objetivo de um pedido GET é pedir ao servidor um determinado recurso, quer se trate de uma página HTML, de uma imagem, de um documento ou mesmo de dados de uma API. A simplicidade do pedido GET reside no seu método; é uma operação idempotente, o que significa que não deve alterar o estado do servidor ou o recurso que está a ser pedido. Um pedido GET é apenas de leitura e, normalmente, não envolve o envio de dados ou a realização de alterações no servidor; a sua principal função é a recuperação de dados.

Os pedidos GET também suportam a anexação de pares de valor-chave, conhecidos como parâmetros de consulta, ao URL. Os parâmetros de consulta permitem-lhe especificar exatamente o que pretende. Por exemplo, quando se pesquisa algo num motor de busca, a consulta introduzida é passada como uma série de parâmetros num pedido GET para o servidor do motor de busca. O servidor processa estes parâmetros, obtém os resultados de pesquisa relevantes e envia-os de volta como resposta, que é depois apresentada no seu navegador web.

É importante notar que, como os pedidos GET expõem os dados no URL, não são adequados para enviar informações sensíveis ou confidenciais, uma vez que os parâmetros são visíveis para qualquer pessoa que possa ver o URL.

Implementar um pedido GET com curl em PHP

Nesta seção, aprenderá como inicializar sessões curl, definir o URL e outras opções específicas, definir parâmetros específicos, enviar pedidos para recursos remotos e tratar as respostas nas suas aplicações PHP.

Para continuar, precisa de se certificar de que a sua versão de PHP tem suporte para curl. A maioria das instalações modernas de PHP vem com curl habilitado por padrão, mas é sempre uma boa ideia verificar se você o tem. Pode confirmar a sua versão e configuração de PHP utilizando a funçãophpinfo(). Para isso, crie uma pasta chamada php-curl e, nela, crie um ficheiro chamado info.php. Cole o seguinte código no ficheiro:

<?php
phpinfo();

No seu terminal, execute o comando php -S localhost:8000 e navegue para http://localhost:8000/info.php no seu navegador. Na página web resultante, desloque-se para baixo até à secção curl e confirme que o suporte curl esteja ativado:

Implementar um pedido GET com curl em PHP

Depois de confirmar que curl está ativado e antes de inicializar uma sessão curl, tem de criar um ficheiro chamado curl.php na pasta raiz do seu projeto. Em seguida, adicione o seguinte código ao seu novo ficheiro curl.php:

<?php
$ch = curl_init();

Isto inicia uma sessão curl usando a função curl_init(). Esta função inicializa uma nova sessão curl e devolve uma instância de identificador de curl, uma ferramenta crucial para outras operações com curl, como definir opções e enviar pedidos.

Definir o URL e outras opções

A configuração das opções de curl, incluindo a definição do URL, é uma parte crucial da realização de pedidos HTTP usando curl em PHP. Estabelece a base do pedido HTTP, determinando o servidor de destino, o tipo de pedido que está a ser feito (GET, POST, etc.) e qualquer autenticação ou parâmetros necessários.

PHP fornece a função curl_setopt() que facilita a definição de várias opções para um identificador de sessão em curl, e permite que você personalize o comportamento do pedido curl especificando diferentes parâmetros e valores.

A função curl_setopt() tem a forma curl_setopt(CurlHandle $handle, int $option, mixed $value). $handle é o identificador retornado pela função curl_init(); $option representa a opção específica que você quer definir; e $value representa o valor que você quer definir para a opção especificada.

Para definir o URL, adicione o seguinte código ao ficheiro curl.php:

$url = "https://dummyjson.com/products";
curl_setopt($ch, CURLOPT_URL, $url);

Este código utiliza a função curl_setopt() para definir a opção URL para o identificador de sessão em curl. CURLOPT_URL é uma constante que significa a opção de definir o URL para o pedido curl.

Agora, vamos explorar algumas outras opções que podem ser configuradas.

Para definir a opção curl para uma experiência de pedido HTTP mais controlada, adicione o seguinte código ao ficheiro curl.php:

// Set a timeout for the cURL request
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
// return the response from the server as a string instead of outputting it directly
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// avoid following redirects, if any
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);

Neste código, CURLOPT_TIMEOUT é configurado com um valor de 30, definindo um tempo máximo de execução de trinta segundos para o pedido curl. Isto garante que, se o pedido demorar mais de trinta segundos, o tempo limite será atingido, evitando esperas prolongadas.

CURLOPT_RETURNTRANSFER é definido como true, instruindo o curl a devolver a resposta do servidor como uma cadeia em vez de a mostrar diretamente. Isto permite-lhe capturar e manipular os dados de resposta dentro do script PHP.

Por último, CURLOPT_FOLLOWLOCATION é definido como false, indicando que curl não deve seguir automaticamente os redireccionamentos HTTP. Ao desativar o redireccionamento automático, o script mantém o controlo sobre o fluxo do pedido, permitindo o tratamento personalizado das respostas de redireccionamento.

Pode obter mais informações sobre outras opções que pode configurar na documentação de PHP.

Executar o pedido GET

Para executar o pedido e ver a resposta, adicione o seguinte código ao ficheiro curl.php:

// Execute the cURL request and capture the response
$response = curl_exec($ch);
// Check for cURL errors
if (curl_errno($ch)) {
   echo 'Curl error: ' . curl_error($ch);
} else {
   // Decode JSON response if it is a JSON string
   $decodedResponse = json_decode($response, true);
   // Check if decoding was successful
   if ($decodedResponse !== null) {
       // Output the JSON response to the UI
       header('Content-Type: application/json');
       echo json_encode($decodedResponse, JSON_PRETTY_PRINT);
   } else {
       // If the response is not valid JSON, echo it as plain text
       echo $response;
   }
}
// Close cURL session
curl_close($ch);

Em seguida, navegue para http://localhost:8000/curl.php no seu navegador e, quando a página for carregada, deverá obter um conjunto de produtos em formato JSON:

Executar o pedido GET

Enviar um pedido GET com parâmetros

Para especificar parâmetros no URL, adicione o seguinte código abaixo $url = "https://dummyjson.com/products";:

// Query parameters
$params = [
   'limit' => 2
];

// Construct the complete URL with query parameters
$url .= '?' . http_build_query($params);

Neste código, define "https://dummyjson.com/products" como o URL de base. Em seguida, define um parâmetro de consulta chamado limit com um valor de 2 numa matriz associativa chamada $params. Para incorporar este parâmetro no URL, utiliza a função http_build_query($params), que converte a matriz associativa numa cadeia de consulta codificada pelo URL. A cadeia de consulta resultante é concatenada ao URL original utilizando um ponto de interrogação, criando um URL completo com o parâmetro de consulta especificado. O URL resultante tem o seguinte aspeto: "https://dummyjson.com/products?limit=2".

Para testar isto, navegue para http://localhost:8000/curl.php no seu navegador e volte a carregar a página. Deverá obter uma matriz com apenas dois produtos no formato JSON:

Enviar um pedido GET com parâmetros

Conclusão

Neste artigo, você aprendeu como fazer pedidos GET usando curl em PHP. Compreender os fundamentos de um pedido GET constitui a base para um intercâmbio de dados simplificado.

Utilizando várias opções de curl, os programadores podem personalizar os seus pedidos GET, assegurando um controlo preciso dos tempos limite, gerindo redireccionamentos e recebendo respostas como cadeias de caracteres para posterior manipulação. Esta flexibilidade permite que os programadores afinem as suas interações com os servidores web e garante uma recuperação de dados eficiente e adaptada.

Para saber mais sobre como usar curl, confira este guia de uso de curl com Python e este tutorial de uso de curl com proxies.