# API с авторизацией в PHP

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

Пользователи нашего API должны будут получить этот токен каким-то образом. Например, купить его. В этом случае у каждого купившего будет свой токен.

Давайте посмотрим работу с токенами на примере. Пусть наше API параметром будет принимать число, а возвращать квадрат этого числа. Давайте сделаем это API закрытым. Приступим к реализации.

Для начала для простоты сделаем один общий токен и будем хранить его в открытом виде в файле:

`<?php $token = '12345'; ?>`

Вот так мы будем обращаться к нашему API, передавая параметр и токен:

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

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

`<?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'; } ?>`

Сделайте API, которое параметром будет принимать дату дня рождения и возвращать сколько дней осталось до этой даты. Сделайте авторизацию по токену.

Модифицируйте предыдущую задачу так, чтобы и параметр, и токен передавались методом POST.

Модифицируйте предыдущую задачу так, чтобы токен передавался через HTTP заголовок `X-Token`.

Сделайте так, чтобы токены хранились в базе данных и у каждого пользователя API был свой токен.

Ограничьте каждому пользователю API количество запросов до `10` в день.

←→
↑