API с авторизация в PHP

Може да се направи така, че API да бъде не публично, а частно, достъпно само с парола. В този случай при достъп до нашето API във всяка заявка, освен параметрите, ще трябва да се предаде и правилната парола. Такава парола се нарича токен.

Потребителите на нашето API ще трябва да получат този токен по някакъв начин. Например, да го купят. В този случай всеки, който го купи, ще има свой собствен токен.

Нека разгледаме работата с токени с пример. Нека нашето API да приема число като параметър, и да връща квадрата на това число. Нека направим това API частно. Да започнем с реализацията.

За начало, за простота, ще направим един общ токен и ще го съхраняваме в отворен вид във файл:

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

Ето как ще се обръщаме към нашето API, предавайки параметъра и токена:

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

Нека реализираме API с проверка на токена:

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

Направете API, което като параметър ще приема дата на рожден ден и ще връща колко дни остават до тази дата. Направете авторизация чрез токен.

Задание 2

Модифицирайте предната задача така, че и параметърът, и токенът да се предават чрез метода POST.

Задание 3

Модифицирайте предната задача така, че токенът да се предава чрез HTTP заглавка X-Token.

Задание 4

Направете така, че токените да се съхраняват в база данни и всеки потребител на API да има свой собствен токен.

Задание 5

Ограничете за всеки потребител на API броя заявки до 10 на ден.