PHP-de REST API

API üçin, hem API öndürijileriň, hem-de onuň ulanjylarynyň umumy amatlylygy üçin standartlaşdyrylan aýratyn ýörelgeler bar.

Şeýle ýörelgeleriň biri REST API-dir. Onuň esasynda CRUD amallary üçin HTTP protokolyň türli usullaryny ulanmak gerek diýen pikiri ýatýar.

Maglumat almak üçin - GET usuly, maglumat döretmek üçin - POST usuly, maglumat üýtgetmek üçin - PUT usuly, maglumat pozmak üçin - DELETE usuly.

Mysal üçin, ulanyjylar bilen işleýän bir API-ny gözden geçireli. Dürli hereketler üçin URL-leriň nähili görünjekdigine seredeli.

Ähli ulanyjylary alyş:

urlGET http://api.loc/users/

Bir ulanyjyny onuň id boýunça alyş:

urlGET http://api.loc/user/1/

Ulanyjy döretmek:

urlPOST http://api.loc/user/

Ulanyjyny onuň id boýunça üýtgetmek:

urlPUT http://api.loc/user/1/

Ulanyjyny onuň id boýunça pozmak:

urlDELETE http://api.loc/user/1/

Geliň, REST API-niň PHP-de nähili amala aşyrylandygyna seredeli. Bu ýerde käbir kynçylyk bar. Sebäbi, hem PHP, hem CURL diňe GET we POST usullaryny goldaýar:

api.loc/index.php<?php
  $method = $_SERVER['REQUEST_METHOD'];
  var_dump($method); // diňe GET we POST
?>

Şonuň üçin REST API amala aşyrmak üçin aýlaw ýol ulanmaly. Onuň mazmuny şonda, aslynda maglumatlar diňe GET we POST usullary bilen iberiler, ýöne biz beýleki usullaryň işini ýörite HTTP sözbaşysy arkaly ýasarys. Ona, mysal üçin, HTTP-X-HTTP-METHOD diýip at belleris.

Şonda bu sözbaşynyň mazmunyny aşakdaky ýaly alyp bileris:

api.loc/index.php<?php
  $method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>

Indi biz API-niň amala aşyrylyşyny ýazyp bileris:

api.loc/index.php<?php
  $method = $_SERVER['HTTP-X-HTTP-METHOD'];
  
  switch ($method)  {
    case 'GET':
      // ...
    break;
    case 'POST':
      // ...
    break;
    case 'PUT':
      // ...
    break;
    case 'DELETE':
      // ...
    break;
  }
?>
Задание 1

Internet dükanynyň önümleriniň REST API-sini amala aşyryň.

Задание 2

Amala aşyrylan API-niň işini CURL kitaphanasy arkaly barlap görüň.