API sa autorizacijom u PHP-u

Može se napraviti tako da API bude ne javan, već privatan, dostupan samo sa lozinkom. U ovom slučaju, prilikom pozivanja našeg API-ja, u svakom zahtevu pored parametara trebaće da prosledite i ispravnu lozinku. Takva lozinka se zove token.

Korisnici našeg API-ja će morati da dobiju ovaj token na neki način. Na primer, da ga kupe. U ovom slučaju svaki kupac će imati svoj token.

Hajde da pogledamo rad sa tokenima na primeru. Neka naš API parametrom prima broj, a vraća kvadrat tog broja. Hajde da napravimo ovaj API privatnim. Počnimo sa realizacijom.

Za početak, radi jednostavnosti, napravimo jedan zajednički token i sačuvajmo ga u otvorenom obliku u fajlu:

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

Ovako ćemo pristupati našem API-ju, prosledjujući parametar i token:

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

Implementirajmo API sa proverom tokena:

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

Napravite API koje će parametrom primatiti datum rođendana i vraćati koliko dana je ostalo do tog datuma. Implementirajte autorizaciju putem tokena.

Задание 2

Modifikujte prethodni zadatak tako, da i parametar, i token budu prosleđeni POST metodom.

Задание 3

Modifikujte prethodni zadatak tako, da se token prosleđuje putem HTTP zaglavlja X-Token.

Задание 4

Uredite tako da se tokeni čuvaju u bazi podataka i da svaki korisnik API-ja ima svoj token.

Задание 5

Ograničite svakom korisniku API-ja broj zahteva na 10 dnevno.