API autentimisega PHP-s

Võimalik on teha API mitte avalikuks, vaid privaatseks, ligipääsetavaks ainult parooli abil. Sel juhul tuleb meie API-le pöördumisel igas päringus lisaks parameetritele edastada õige parool. Sellist parooli nimetatakse tokeniks.

Meie API kasutajad peavad selle tokeni kuidagi saama. Näiteks ostma selle. Sel juhul on igal ostjal oma token.

Vaatame tokenitega töötamist näite varal. Oletame, et meie API võtab parameetrina numbri ja tagastab selle numbri ruudu. Teeme selle API privaatseks. Asume rakendamise kallale.

Alustuseks lihtsuse mõttes teeme ühe üldise tokeni ja hoiame seda avatud kujul failis:

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

Nii me pöördume oma API poole, edastades parameetri ja tokeni:

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

Rakendame API tokeni kontrolliga:

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

Tehke API, mis võtab parameetrina sünnipäeva kuupäeva ja tagastab mitu päeva on selleni jäänud. Tehke autentimine tokeni abil.

Задание 2

Muutke eelmist ülesannet nii, et nii parameeter kui token edastataks POST meetodil.

Задание 3

Muutke eelmist ülesannet nii, et token edastataks läbi HTTP päise X-Token.

Задание 4

Tehke nii, et tokenid hoitaks andmebaasis ja igal API kasutajal oleks oma token.

Задание 5

Piirake igale API kasutajale päringute arvu 10 päevas.