REST API i PHP
Det finns speciella tillvägagångssätt som standardiserar API:er för gemensam bekvämlighet för både utvecklare av API:et och dess användare.
Ett sådant tillvägagångssätt är REST API. Dess grundidé är att för CRUD-operationer bör man använda olika metoder från HTTP-protokollet.
För att hämta data - metoden GET, för att skapa data - metoden POST, för att ändra data - metoden PUT, för att ta bort data - metoden DELETE.
Låt oss som exempel betrakta ett API som manipulerar användare. Låt oss se hur URL:en kommer att se ut för olika åtgärder.
Hämtar alla användare:
GET http://api.loc/users/
Hämtar en användare efter deras id:
GET http://api.loc/user/1/
Skapar en användare:
POST http://api.loc/user/
Ändrar en användare efter deras id:
PUT http://api.loc/user/1/
Tar bort en användare efter deras id:
DELETE http://api.loc/user/1/
Låt oss se hur REST API implementeras i PHP. Det finns ett visst problem här. Saken är den att både PHP och CURL endast stöder metoderna GET och POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // endast GET och POST
?>
Därför måste man ta till en knep för att implementera REST API.
Tricket går ut på att i verkligheten kommer data att skickas
endast med metoderna GET och POST, men vi kommer att
imitera funktionen av andra metoder
med hjälp av en anpassad HTTP-header.
Låt oss kalla den, till exempel, HTTP-X-HTTP-METHOD.
Då kan vi få innehållet i denna header på följande sätt:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Nu kan vi skriva implementationen av API:et:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Implementera ett REST API för produkter i en webbshop.
Testa funktionen hos det implementerade API:et med hjälp av CURL-biblioteket.