PHP-də REST API
Ümumi rahatlıq üçün həm API developerləri, həm də onun istifadəçiləri üçün API-ni standartlaşdıran xüsusi yanaşmalar mövcuddur.
Belə yanaşmalardan biri də REST API-dir. Onun əsasında CRUD əməliyyatları üçün müxtəlif HTTP protokol metodlarından istifadə etmək lazım olduğu fikri durur.
Məlumat əldə etmək üçün - GET metodu, məlumat yaratmaq üçün - POST metodu, məlumatı dəyişmək üçün - PUT metodu, məlumatı silmək üçün - DELETE metodu.
Nümunə olaraq, istifadəçilərlə işləyən müəyyən bir API-ni nəzərdən keçirək. Müxtəlif əməliyyatlar üçün URL-lərin necə görünəcəyinə baxaq.
Bütün istifadəçiləri əldə edirik:
GET http://api.loc/users/
Bir istifadəçini onun id ilə əldə edirik:
GET http://api.loc/user/1/
Istifadəçi yaradırıq:
POST http://api.loc/user/
Istifadəçini onun id ilə dəyişirik:
PUT http://api.loc/user/1/
Istifadəçini onun id ilə silirik:
DELETE http://api.loc/user/1/
Gəlin, REST API-nin PHP-də necə realizə olunduğuna baxaq. Burada müəyyən bir problem var. Məsələ ondadır ki, həm PHP, həm də CURL yalnız GET və POST metodlarını dəstəkləyir:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // yalnız GET və POST
?>
Ona görə də REST API-ni həyata keçirmək
üçün hiylə işlətmək lazımdır. Onun mahiyyəti
ondadır ki, reallıqda məlumatlar yalnız
GET və POST metodları ilə ötürüləcək,
amma biz digər metodların işini
xüsusi HTTP başlığı vasitəsilə
taklid edəcəyik. Onu, məsələn,
HTTP-X-HTTP-METHOD adlandıraq.
O zaman biz bu başlığın məzmununu aşağıdakı kimi əldə edə biləcəyik:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
İndi biz API-nin realizasiyasını yaza bilərik:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Internet mağazasının məhsul REST API-ni realizə edin.
Həyata keçirilmiş API-nin işini CURL kitabxanası vasitəsilə yoxlayın.