REST API in PHP
Er zijn speciale benaderingen die API standaardiseren voor het algemene gemak van zowel API-ontwikkelaars als zijn gebruikers.
Een van dergelijke benaderingen is REST API. De basisidee is dat voor CRUD-bewerkingen verschillende methoden van het HTTP-protocol moeten worden gebruikt.
Voor het ophalen van gegevens - de GET-methode, voor het aanmaken van gegevens - de POST-methode, voor het wijzigen van gegevens - de PUT-methode, voor het verwijderen van gegevens - de DELETE-methode.
Laten we als voorbeeld een API bekijken die gebruikers beheert. Laten we kijken hoe de URL's voor verschillende acties eruit zullen zien.
Alle gebruikers ophalen:
GET http://api.loc/users/
Een gebruiker ophalen op basis van zijn id:
GET http://api.loc/user/1/
Een gebruiker aanmaken:
POST http://api.loc/user/
Een gebruiker wijzigen op basis van zijn id:
PUT http://api.loc/user/1/
Een gebruiker verwijderen op basis van zijn id:
DELETE http://api.loc/user/1/
Laten we eens kijken hoe REST API wordt geïmplementeerd in PHP. Er is een zeker probleem. Feit is dat zowel PHP als CURL alleen de GET- en POST-methoden ondersteunen:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // alleen GET en POST
?>
Daarom moeten we een list gebruiken
voor de implementatie van REST API.
De essentie ervan is dat
in werkelijkheid gegevens alleen worden doorgegeven
via GET- en POST-methoden, maar we zullen
het werk van andere methoden simuleren
met behulp van een aangepaste HTTP-header.
Laten we deze bijvoorbeeld HTTP-X-HTTP-METHOD noemen.
Dan kunnen we de inhoud van deze header als volgt verkrijgen:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Nu kunnen we de API-implementatie schrijven:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Implementeer een REST API voor producten van een webwinkel.
Test de werking van de geïmplementeerde API met behulp van de CURL-bibliotheek.