REST API у PHP
Існуюць спецыяльныя падыходы, стандартызуючыя API для агульнага зручнасці як распрацоўшчыкаў API, так і яго карыстальнікаў.
Адным з такіх падыходаў з'яўляецца REST API. У яго аснове ляжыць ідэя, што для CRUD аперацый неабходна выкарыстоўваць розныя метады пратакола HTTP.
Для атрымання даных - метад GET, для стварэння даных - метад POST, для змянення даных - метад PUT, для выдалення даных - метад DELETE.
Для прыкладу давайце разгледзім нейкае API, якое маніпулюе карыстальнікамі. Давайце паглядзім, як будуць выглядаць URL для розных дзеянняў.
Атрымліваем усіх карыстальнікаў:
GET http://api.loc/users/
Атрымліваем аднаго карыстальніка па яго id:
GET http://api.loc/user/1/
Ствараем карыстальніка:
POST http://api.loc/user/
Змяняем карыстальніка па яго id:
PUT http://api.loc/user/1/
Выдаляем карыстальніка па яго id:
DELETE http://api.loc/user/1/
Давайце паглядзім, як REST API рэалізуецца ў PHP. Тут ёсць некаторая праблема. Справа ў тым, што і PHP, і CURL падтрымліваюць толькі метады GET і POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // толькі GET і POST
?>
Таму для рэалізацыі REST API прыйдзецца
ісці на хітрасць. Яе суть заключаецца ў тым,
што ў рэальнасці даныя будуць перадавацца
толькі метадамі GET і POST, але мы будзем
імітаваць працу іншых метадаў
з дапамогай кастомнага HTTP загалоўка.
Назвем яго, напрыклад, HTTP-X-HTTP-METHOD.
Тады мы зможам атрымаць змесціва гэтага загалоўка наступным чынам:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Цяпер мы можам напісаць рэалізацыю API:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Рэалізуйце REST API тавараў інтэрнэт магазіна.
Праверце працу рэалізаванага API з дапамогай бібліятэкі CURL.