Requête GET avec cURL en PHP

Guide des requêtes GET avec cURL en PHP. Découvrez les requêtes GET et apprenez à implémenter une requête GET avec cURL en PHP.
4 min read
curl GET Request with PHP

cURL est un outil de ligne de commande et une bibliothèque qui est utilisé pour transférer des données avec des URL. Dans le contexte du développement web, cURL permet aux utilisateurs de lancer des requêtes et d’interagir avec diverses ressources Internet, telles que des sites web et des API, directement depuis la ligne de commande ou par l’intermédiaire de scripts.

cURL prend en charge des protocoles très divers, y compris HTTP, HTTPS, FTP et FTPS, ce qui le rend incroyablement polyvalent pour des tâches telles que le transfert de fichiers, la récupération de données et l’intégration d’API. La capacité de cURL à gérer des opérations complexes et à envoyer différents types de requêtes en a fait un outil indispensable, qui permet d’assurer une communication transparente entre des applications et des serveurs distants. Sa flexibilité et sa facilité d’utilisation en font un composant fondamental dans les flux de tâches modernes de développement web.

Les requêtes GET sont un composant crucial de la communication web ; elles sont conçues pour récupérer des informations ou des données dans une ressource spécifique sur un serveur web. Dans ce tutoriel, vous allez apprendre à utiliser cURL pour lancer une requête GET avec PHP.

Qu’est-ce qu’une requête GET ?

Une requête GET est une méthode HTTP conçue pour récupérer des informations ou des données dans une ressource spécifique sur un serveur web. Par exemple, lorsque vous entrez une URL dans votre navigateur web et que appuyez sur Entrée, vous déclenchez une requête GET. Le navigateur envoie une requête GET au serveur et renvoie une page web, qui s’affiche sur le navigateur.

Le but d’une requête GET est de demander au serveur une ressource particulière, qu’il s’agisse d’une page HTML, d’une image, d’un document ou même de données provenant d’une API. La simplicité de la requête GET réside dans sa méthode ; il s’agit d’une opération idempotente, ce qui signifie qu’elle ne doit pas changer l’état du serveur ou de la ressource demandée. Une requête GET est en lecture seule, et elle n’implique généralement pas d’envoi de données ni de modification du serveur ; sa fonction principale est de récupérer des données.

Les requêtes GET prennent également en charge l’ajout de paires clé-valeur, appelées paramètres de requête, à l’URL. Les paramètres de requête vous permettent de spécifier exactement ce que vous voulez. Par exemple, lorsque vous recherchez quelque chose sur un moteur de recherche, la requête que vous entrez est transmise au serveur du moteur de recherche sous la forme d’une série de paramètres dans une requête GET. Le serveur traite ces paramètres, récupère les résultats de recherche pertinents et les renvoie comme réponse ; c’est cette réponse que vous voyez alors d’afficher dans votre navigateur web.

Il est important de noter que les requêtes GET exposent des données dans l’URL et qu’à ce titre, elles ne sont pas adaptées à l’envoi d’informations sensibles ou confidentielles, car les paramètres considérés sont visibles par quiconque peut consulter l’URL.

Implémenter une requête GET avec cURL en PHP

Dans cette section, vous allez apprendre à initialiser des sessions cURL, à définir l’URL pertinente ainsi que d’autres options spécifiques, à définir des paramètres spécifiques, à envoyer des requêtes à des ressources distantes et à gérer les réponses dans vos applications PHP.

Avant de continuer, vous devez vous assurer que votre version de PHP prend en charge cURL. La plupart des installations PHP modernes sont livrées avec cURL activé par défaut, mais il est préférable de vérifier que c’est bien le cas. Vous pouvez confirmer votre version PHP et votre configuration à l’aide de la fonction phpinfo(). Pour ce faire, créez un dossier nommé php-curl, puis créez-y un fichier nommé info.php. Collez le code suivant dans le fichier :

<?php
phpinfo();

Sur votre terminal, exécutez la commande php -S localhost:8000 et accédez à http://localhost:8000/info.php dans votre navigateur. Sur la page web résultante, défilez jusqu’à la section cURL et confirmez que la prise en charge de cURL est activée :

Implémenter une requête GET avec cURL en PHP

Une fois que vous avez confirmé que cURL est bien activé, et avant d’initialiser une session cURL, vous devez créer un nouveau fichier nommé curl.php dans le dossier racine de votre projet. Ajoutez ensuite le code suivant à votre nouveau fichier curl.php :

<?php
$ch = curl_init();

Cela permet d’initier une session cURL à l’aide de la fonction curl_init(). Cette fonction initialise une nouvelle session cURL et renvoie une instance de handle cURL, qui est un outil très important pour effectuer d’autres opérations avec cURL, telles que la définition d’options et l’envoi de requêtes.

Définition de l’URL et des autres options

La configuration des options de cURL, notamment la définition de l’URL, est une partie cruciale de la création de requêtes HTTP avec cURL en PHP. Elle permet d’établir la base de la requête HTTP, en déterminant le serveur cible, le type de requête effectuée (GET, POST, etc.), ainsi que toute authentification ou tout paramètre nécessaire.

PHP fournit la fonction curl_setopt(), qui facilite la définition des différentes options d’un handle de session cURL, et qui vous permet de personnaliser le comportement de la requête cURL en spécifiant différents paramètres et valeurs.

La fonction curl_setopt() est exécutée sous la forme curl_setopt(CurlHandle $handle, int $option, mixed $value). $handle est le handle retourné par la fonction curl_init(), $option représente l’option spécifique que vous voulez définir, et $value représente la valeur que vous voulez définir pour l’option spécifiée.

Pour définir l’URL, ajoutez le code suivant au fichier curl.php :

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

Ce code utilise la fonction curl_setopt() pour définir l’option URL du handle de session cURL. CURLOPT_URL est une constante qui désigne l’option de définir l’URL pour la requête cURL.

Explorons maintenant quelques autres options que vous pouvez configurer.

Pour définir l’option cURL de manière à mieux contrôler vos requêtes HTTP, ajoutez le code suivant au fichier 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);

Dans ce code, CURLOPT_TIMEOUT est configuré avec une valeur de 30, ce qui définit un temps d’exécution maximum de 30 secondes pour la requête cURL. Cela garantit que si la requête prend plus de trente secondes, elle expire, ce qui évite de prolonger l’attente.

CURLOPT_RETURNTRANSFER a la valeur TRUE, ce qui indique à cURL de renvoyer la réponse du serveur sous forme de chaîne au lieu de l’afficher directement. Cela vous permet de capturer et de manipuler les données de réponse dans le script PHP.

Enfin, CURLOPT_FOLLOWLOCATION a la valeur FALSE, ce qui indique que cURL ne doit pas suivre automatiquement les redirections HTTP. En désactivant la redirection automatique, le script conserve le contrôle du flux de requête, ce qui permet une gestion personnalisée des réponses de redirection.

Vous pouvez en savoir plus sur les autres options que vous pouvez configurer dans la documentation PHP.

Exécution de la requête GET

Pour exécuter la requête et afficher la réponse, ajoutez le code suivant au fichier 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);

Ensuite, accédez à http://localhost:8000/curl.php sur votre navigateur, et lorsque la page est chargée, vous devriez obtenir un tableau de produits au format JSON :

Exécution de la requête GET

Envoi d’une requête GET avec des paramètres

Pour spécifier des paramètres dans l’URL, ajoutez le code suivant après $url = "https://dummyjson.com/products"; :

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

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

Dans ce code, vous définissez "https://dummyjson.com/products" comme URL de base. Ensuite, vous définissez un paramètre de requête nommé limit avec une valeur égale à 2 dans un tableau associatif nommé $params. Pour incorporer ce paramètre dans l’URL, vous utilisez la fonction http_build_query($params), qui convertit le tableau associatif en chaîne de requête codée par URL. La chaîne de requête résultante est concaténée à l’URL d’origine à l’aide d’un point d’interrogation, ce qui permet de créer une URL complète avec le paramètre de requête spécifié. L’URL obtenue devrait ressembler à ceci : "https://dummyjson.com/products?limit=2".

Pour tester cela, accédez à http://localhost:8000/curl.php sur votre navigateur, puis rechargez la page. Vous devriez obtenir un tableau avec seulement deux produits au format JSON :

Envoi d’une requête GET avec des paramètres

Conclusion

Dans cet article, vous avez appris à faire des requêtes GET en utilisant cURL en PHP. Comprendre les principes fondamentaux d’une requête GET constitue la base d’un échange de données bien construit.

En utilisant diverses options cURL, les développeurs peuvent personnaliser leurs requêtes GET, de manière à bénéficier d’un contrôle précis sur les délais d’expiration, la gestion des redirections et la réception des réponses sous forme de chaînes en vue d’une manipulation ultérieure. Cette flexibilité permet aux développeurs d’affiner leurs interactions avec les serveurs web et garantit une récupération efficace et personnalisée des données.

Pour en savoir plus sur l’utilisation de cURL, consultez ce guide consacré à l’utilisation de cURL avec Python et ce tutoriel consacré à l’utilisation de cURL avec des proxys.