REST API in PHP
Esistono approcci speciali che standardizzano le API per la comodità generale sia degli sviluppatori delle API, sia dei loro utenti.
Uno di questi approcci è REST API. La sua idea fondamentale è che per le operazioni CRUD è necessario utilizzare vari metodi del protocollo HTTP.
Per ottenere dati - il metodo GET, per creare dati - il metodo POST, per modificare dati - il metodo PUT, per eliminare dati - il metodo DELETE.
Ad esempio, consideriamo una certa API che manipola gli utenti. Diamo un'occhiata a come appariranno gli URL per varie azioni.
Ottenere tutti gli utenti:
GET http://api.loc/users/
Ottenere un utente tramite il suo id:
GET http://api.loc/user/1/
Creare un utente:
POST http://api.loc/user/
Modificare un utente tramite il suo id:
PUT http://api.loc/user/1/
Eliminare un utente tramite il suo id:
DELETE http://api.loc/user/1/
Diamo un'occhiata a come REST API viene implementato in PHP. C'è un piccolo problema qui. Il fatto è che sia PHP che CURL supportano solo i metodi GET e POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // solo GET e POST
?>
Pertanto, per implementare REST API, dovremo
ricorrere a un trucco. L'essenza di questo trucco
è che in realtà i dati verranno trasmessi
solo tramite i metodi GET e POST, ma noi
simuleremo il funzionamento di altri metodi
tramite un'intestazione HTTP personalizzata.
Chiamiamola, ad esempio, HTTP-X-HTTP-METHOD.
Quindi potremo ottenere il contenuto di questa intestazione nel modo seguente:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Ora possiamo scrivere l'implementazione dell'API:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Implementare una REST API per i prodotti di un negozio online.
Verificare il funzionamento dell'API implementata utilizzando la libreria CURL.