API s autorizací v PHP

Lze nastavit, aby API nebylo veřejné, ale privátní, přístupné pouze s heslem. V tomto případě bude při přístupu k našemu API nutné v každém požadavku kromě parametrů předat správné heslo. Takovému heslu se říká token.

Uživatelé našeho API musí získat tento token nějakým způsobem. Například jej koupit. V tomto případě bude každý, kdo si koupí, mít svůj vlastní token.

Podívejme se na práci s tokeny na příkladu. Předpokládejme, že naše API bude přijímat číslo jako parametr a vracet druhou mocninu tohoto čísla. Udělejme toto API privátním. Pojďme k implementaci.

Pro začátek pro jednoduchost vytvoříme jeden společný token a budeme jej ukládat v otevřené podobě v souboru:

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

Takhle budeme přistupovat k našemu API, předávajíce parametr a token:

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

Implementujme API s kontrolou tokenu:

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

Vytvořte API, které parametrem bude přijímat datum narození a vracet kolik dní zbývá do tohoto data. Implementujte autorizaci pomocí tokenu.

Задание 2

Upravte předchozí úlohu tak, aby se jak parametr, tak token předávaly metodou POST.

Задание 3

Upravte předchozí úlohu tak, aby se token předával prostřednictvím HTTP hlavičky X-Token.

Задание 4

Zařiďte, aby se tokeny ukládaly v databázi a každý uživatel API měl svůj vlastní token.

Задание 5

Omezte každému uživateli API počet požadavků na 10 za den.