REST API në PHP
Ekzistojnë qasje të veçanta, që standardizojnë API për lehtësi të përgjithshme si për zhvilluesit e API, ashtu edhe për përdoruesit e tij.
Një nga këto qasje është REST API. Në themel të saj qëndron ideja, që për operacionet CRUD është e nevojshme të përdoren metoda të ndryshme të protokollit HTTP.
Për marrjen e të dhënave - metoda GET, për krijimin e të dhënave - metoda POST, për ndryshimin e të dhënave - metoda PUT, për fshirjen e të dhënave - metoda DELETE.
Për shembull, le të shqyrtojmë një API të caktuar, që manipulon përdorues. Le të shohim, si do të duken URL për veprime të ndryshme.
Marrim të gjithë përdoruesit:
GET http://api.loc/users/
Marrim një përdorues sipas id të tij:
GET http://api.loc/user/1/
Krijojmë përdorues:
POST http://api.loc/user/
Ndryshojmë përdorues sipas id të tij:
PUT http://api.loc/user/1/
Fshijmë përdorues sipas id të tij:
DELETE http://api.loc/user/1/
Le të shohim se si REST API implementohet në PHP. Këtu ka një problem të caktuar. Çështja është se si PHP, ashtu edhe CURL mbështesin vetëm metodat GET dhe POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // vetëm GET dhe POST
?>
Prandaj, për të implementuar REST API do të duhet
të përdorim një truk. Thelbi i tij qëndron në faktin
që në realitet të dhënat do të transmetohen
vetëm me metodat GET dhe POST, por ne do
të imitojmë punën e metodave të tjera
me ndihmën e një kokë HTTP të personalizuar.
Le ta quajmë atë, për shembull, HTTP-X-HTTP-METHOD.
Atëherë ne do të mund të marrim përmbajtjen e kësaj koke si më poshtë:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Tani ne mund të shkruajmë implementimin e API:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Implementoni REST API për produktet e një dyqani online.
Testoni funksionimin e API-së së implementuar me ndihmën e bibliotekës CURL.