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 дневно.