Requête cURL GET utilisant PHP
-
Utilisez
curl_init()
etcurl_setopt()
pour obtenir une requête en PHP -
Utiliser
cURL
avec des API (JSON) en PHP
Sur le Web, et principalement le HTTPS, nous utilisons des requêtes GET
pour obtenir une représentation spécifique des ressources. Pour obtenir des données, des méthodes GET
sont employées.
En particulier dans les scénarios d’API et de web scraping, les développeurs utilisent des méthodes spécifiques au langage. Nous utilisons les fonctions cURL
pour gérer les requêtes GET
en PHP.
La bibliothèque cURL
gère les opérations depuis l’initialisation, l’établissement de la connexion et les transferts jusqu’au retour des ressources. Pour réaliser toutes ces opérations, des fonctions intégrées sont disponibles telles que curl_close()
, curl_init()
à curl_exec()
.
Ce tutoriel aborde les différents cas d’utilisation des requêtes cURL
GET
et les fonctions correspondantes qui les rendent possibles.
Utilisez curl_init()
et curl_setopt()
pour obtenir une requête en PHP
Le format typique pour obtenir une demande d’un autre serveur ou utilisateur implique l’utilisation des fonctions de base suivantes.
curl_init(); // initializes a cURL session
curl_setopt(); // changes the cURL session behavior with options
curl_exec(); // executes the started cURL session
curl_close(); // closes the cURL session and deletes the variable made by curl_init();
Vous verrez les quatre fonctions dans cet article et la plupart du code de requête GET
que vous écrirez à l’aide de la bibliothèque cURL
.
Maintenant, pour un exemple d’utilisation, nous allons attribuer à la variable $url
l’URL du site à partir duquel nous voulons obtenir une requête et lancer une session cURL
à l’aide des fonctions curl_init()
. Ensuite, nous spécifions l’option pour le transfert cURL
effectué sur l’URL spécifiée.
La première instruction de la fonction curl_setopt()
contient l’option URL à récupérer
avec la valeur affectée à la variable $url
. La deuxième instruction de fonction curl_setopt()
contient l’option retourner le transfert sous forme de chaîne
, contenant une valeur booléenne.
<?php
$url = "https://reqbin.com/echo";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);
?>
La sortie du code PHP ci-dessus est ci-dessous.
Utiliser cURL
avec des API (JSON) en PHP
En règle générale, lors de l’interaction avec les API, la réponse de données serait souvent JSON et en utilisant les fonctions cURL
, nous pouvons traiter correctement ces objets de données dans des paires attribut-valeur et au format de tableaux en utilisant les fonctions curl_getinfo()
et json_encode()
, entre autres.
Ici, nous allons interagir avec une API User
de démonstration, obtenir des données JSON à l’aide de la bibliothèque cURL
et encoder le fichier JSON à l’aide de la fonction appropriée.
-
Initialiser la variable URL et la session
cURL
.$url = 'https://jsonplaceholder.typicode.com/users'; // Sample example to get data. $resource = curl_init($url);
-
Configurez les options
cURL
et les variables d’information.curl_setopt($resource, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($resource); $info = curl_getinfo($resource); $code = curl_getinfo($resource, CURLINFO_HTTP_CODE);
-
Déboguez pour vérifier le code d’état de la réponse (étape facultative), mais vous devriez voir
200
.echo $result.'<br>'; echo "<pre>"; print_r($info); echo "</pre>"; // Get response status code echo "<pre>"; print_r($code); echo "</pre>";
-
Fermez la session
cURL
pour mieux gérer les ressources.curl_close($resource);
-
Créez le modèle de tableau pour stocker les données obtenues à partir de l’API via JSON.
// set_opt_array $user = [ 'name' => 'John Doe', 'username' => 'john', 'email' => 'john@example.com' ];
-
Utilisez
curl_init()
etcurl_setopt_array()
pour traiter les données JSON analysées à partir de l’URL en utilisant toutes les options importantes.$resource = curl_init(); curl_setopt_array($resource, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => ['content-type: application/json'], CURLOPT_POSTFIELDS => json_encode($user), ]);
-
Utilisez les fonctions
curl_exec()
etcurl_close()
pour exécuter la sessioncURL
initialisée et fermer la sessioncURL
et libérer toutes les ressources, respectivement. Cependant, en PHP 8.0.0 et supérieur, la fonctioncurl_close()
n’a aucun effet.$result = curl_exec($resource); // creates and returns result curl_close($resource); echo $result;
La sortie du code se traduira par le tableau multidimensionnel PHP ci-dessous.
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
{
"id": 2,
"name": "Ervin Howell",
"username": "Antonette",
"email": "Shanna@melissa.tv",
"address": {
"street": "Victor Plains",
"suite": "Suite 879",
"city": "Wisokyburgh",
"zipcode": "90566-7771",
"geo": {
"lat": "-43.9509",
"lng": "-34.4618"
}
},
"phone": "010-692-6593 x09125",
"website": "anastasia.net",
"company": {
"name": "Deckow-Crist",
"catchPhrase": "Proactive didactic contingency",
"bs": "synergize scalable supply-chains"
}
},
{
"id": 3,
"name": "Clementine Bauch",
"username": "Samantha",
"email": "Nathan@yesenia.net",
"address": {
"street": "Douglas Extension",
"suite": "Suite 847",
"city": "McKenziehaven",
"zipcode": "59590-4157",
"geo": {
"lat": "-68.6102",
"lng": "-47.0653"
}
},
"phone": "1-463-123-4447",
"website": "ramiro.info",
"company": {
"name": "Romaguera-Jacobson",
"catchPhrase": "Face to face bifurcated interface",
"bs": "e-enable strategic applications"
}
},
....
]
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn