REST API en PHP

Il existe des approches spéciales, qui standardisent les API pour le confort commun des développeurs d'API, ainsi que de ses utilisateurs.

L'une de ces approches est REST API. Son fondement est l'idée que pour les opérations CRUD, il est nécessaire d'utiliser différentes méthodes du protocole HTTP.

Pour obtenir des données - la méthode GET, pour créer des données - la méthode POST, pour modifier des données - la méthode PUT, pour supprimer des données - la méthode DELETE.

Par exemple, considérons une API quelconque, manipulant des utilisateurs. Regardons à quoi ressembleront les URL pour diverses actions.

Obtenir tous les utilisateurs :

urlGET http://api.loc/users/

Obtenir un utilisateur par son id :

urlGET http://api.loc/user/1/

Créer un utilisateur :

urlPOST http://api.loc/user/

Modifier un utilisateur par son id :

urlPUT http://api.loc/user/1/

Supprimer un utilisateur par son id :

urlDELETE http://api.loc/user/1/

Voyons comment REST API est implémenté en PHP. Il y a un certain problème ici. Le fait est que PHP et CURL ne prennent en charge que les méthodes GET et POST :

api.loc/index.php<?php
  $method = $_SERVER['REQUEST_METHOD'];
  var_dump($method); // seulement GET et POST
?>

Par conséquent, pour implémenter REST API, il faudra recourir à une astuce. Son essence est que en réalité, les données ne seront transmises que par les méthodes GET et POST, mais nous simulerons le travail d'autres méthodes à l'aide d'un en-tête HTTP personnalisé. Appelons-le, par exemple, HTTP-X-HTTP-METHOD.

Alors nous pourrons obtenir le contenu de cet en-tête de la manière suivante :

api.loc/index.php<?php
  $method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>

Maintenant nous pouvons écrire l'implémentation de l'API :

api.loc/index.php<?php
  $method = $_SERVER['HTTP-X-HTTP-METHOD'];
  
  switch ($method)  {
    case 'GET':
      // ...
    break;
    case 'POST':
      // ...
    break;
    case 'PUT':
      // ...
    break;
    case 'DELETE':
      // ...
    break;
  }
?>
Задание 1

Implémentez une REST API pour les produits d'une boutique en ligne.

Задание 2

Testez le fonctionnement de l'API implémentée à l'aide de la bibliothèque CURL.