Requête cURL GET utilisant PHP

Olorunfemi Akinlua 30 janvier 2023
  1. Utilisez curl_init() et curl_setopt() pour obtenir une requête en PHP
  2. Utiliser cURL avec des API (JSON) en PHP
Requête cURL GET utilisant 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.

Utilisez curl_init et curl_setopt pour obtenir une requête en PHP

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.

  1. Initialiser la variable URL et la session cURL.

    $url = 'https://jsonplaceholder.typicode.com/users';
    // Sample example to get data.
    $resource = curl_init($url);
    
  2. 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);
    
  3. 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>";
    
  4. Fermez la session cURL pour mieux gérer les ressources.

    curl_close($resource);
    
  5. 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'
    ];
    
  6. Utilisez curl_init() et curl_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),
    ]);
    
  7. Utilisez les fonctions curl_exec() et curl_close() pour exécuter la session cURL initialisée et fermer la session cURL et libérer toutes les ressources, respectivement. Cependant, en PHP 8.0.0 et supérieur, la fonction curl_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 Akinlua avatar Olorunfemi Akinlua avatar

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