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.