REST API i PHP
Det finnes spesielle tilnærminger som standardiserer API for felles bekvemmelighet for både utviklere av API, og dets brukere.
En slik tilnærming er REST API. Grunnideen er at for CRUD-operasjoner er det nødvendig å bruke ulike metoder fra HTTP-protokollen.
For å hente data - GET-metoden, for å opprette data - POST-metoden, for å endre data - PUT-metoden, for å slette data - DELETE-metoden.
La oss som et eksempel se på et API som manipulerer brukere. La oss se på hvordan URL-ene vil se ut for ulike handlinger.
Henter alle brukere:
GET http://api.loc/users/
Henter en bruker ved hans id:
GET http://api.loc/user/1/
Oppretter en bruker:
POST http://api.loc/user/
Endrer en bruker ved hans id:
PUT http://api.loc/user/1/
Sletter en bruker ved hans id:
DELETE http://api.loc/user/1/
La oss se på hvordan REST API implementeres i PHP. Det er et visst problem her. Saken er at både PHP og CURL kun støtter GET- og POST-metodene:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // kun GET og POST
?>
Derfor, for å implementere REST API, må man
bruke et lurt triks. Essensen er at
i virkeligheten vil data bare bli sendt
med GET- og POST-metodene, men vi vil
etterligne arbeidet til andre metoder
ved hjelp av en tilpasset HTTP-header.
La oss kalle den, for eksempel, HTTP-X-HTTP-METHOD.
Da kan vi få innholdet i denne headeren som følger:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Nå kan vi skrive implementeringen av API-et:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Implementer REST API for produkter i en nettbutikk.
Test funksjonaliteten til det implementerte API-et ved hjelp av CURL-biblioteket.