PHP-də Avtorizasiya ilə API

API-ni ictimai deyil, qapalı etmək olar, yəni yalnız şifrə ilə əlçatan. Bu halda, bizim API-mizə müraciət edərkən hər sorğuda parametrlərdən əlavə düzgün şifrə ötürülməlidir. Belə bir şifrəyə token deyilir.

Bizim API-mizin istifadəçiləri bu tokeni bir şəkildə əldə etməlidirlər. Məsələn, onu satın alaraq. Bu halda hər alanın öz tokeni olacaq.

Gəlin tokenlərlə işi bir nümunə üzərində nəzərdən keçirək. Fərz edək ki, bizim API-miz parametr kimi bir rəqəm qəbul edir və həmin rəqəmin kvadratını qaytarır. Gəlin bu API-ni qapalı edək. Realizasiyaya başlayaq.

Başlanğıc üçün, sadəlik üçün bir ümumi token edək və onu açıq şəkildə faylda saxlayaq:

api.loc/index.php<?php
  $token = '12345';
?>

Biz API-mizə parametr və tokeni ötürərək belə müraciət edəcəyik:

urlhttp://api.loc/index.php?num=100&token=12345

Gəlin token yoxlaması ilə API-ni realizə edək:

api.loc/index.php<?php
  $token = '12345';
  
  if (isset($_GET['token']) and $_GET['token'] === $token) {
    if (isset($_GET['num'])) {
      echo $_GET['num'] ** 2;
    } else {
      echo 'error';
    }
  } else {
    echo 'incorrect token';
  }
  
?>
Задание 1

Bir API edin ki, parametr kimi doğum tarixini qəbul etsin və bu tarixə qədər neçə gün qaldığını qaytarsın. Token ilə avtorizasiya edin.

Задание 2

Əvvəlki məsələni elə dəyişin ki, həm parametr, həm də token POST metodu ilə ötürülsün.

Задание 3

Əvvəlki məsələni elə dəyişin ki, token HTTP başlığı X-Token vasitəsilə ötürülsün.

Задание 4

Elə edin ki, tokenlər verilənlər bazasında saxlanılsın və hər bir API istifadəçisinin öz tokeni olsun.

Задание 5

Hər bir API istifadəçisi üçün sorğu sayını gündə 10-a məhdudlaşdırın.