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-ის საკუთარი (custom) ჰედერის მეშვეობით.
მოდით, დავარქვათ მას, მაგალითად, 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 ბიბლიოთეკის მეშვეობით.