@SONce

Что такое stateless в http api?

Разрабатываю апи сервис(для личных нужд), возник вопрос на который я не могу найти ответ.

Что такое НА САМОМ деле стейтлесс апи. По определению понятно что для формирования ответа в запросе должны быть все данные. Но ХТТП само по себе стейтлес...

На реальном примере:
Клиент передал логин/пароль/фото_кошки на /api/auth и получил в ответ некий токен с которым он может выполнять запросы. Пока все отлично и красиво.

Но вот клиент прислал запрос, в нем есть токен.
Как этот токен проверять? Хранить гдето в кеше token = user_id? Разве это не стейт? А если нет то чем это отличается о тойже сессии? А от куки?
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 3
@xez
Senior Junior Roo
HTTP - это протокол передачи данных. API, Stateless, etc - это не его уровень.
Вы, видимо, имеете ввиду REST.
В википедии ровно по вашему вопросу есть описание: https://ru.wikipedia.org/wiki/REST#2._%D0%9E%D1%82...
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Как этот токен проверять? Хранить гдето в кеше token = user_id?
Токен можно сделать самодостаточным. Например JWT содержит заголовок (тип токена, алгоритм подписи), полезную нагрузку (id пользователя, его права, служебную информацию) и подпись.
При выдаче токена сервер рассчитывает подпись для первых двух частей, шифрует её своим ключом и прикрепляет её к токену.
При получении токена сервер снова рассчитывает подпись для первых двух частей и сверяет её с расшифрованной подписью из токена. Если подписи совпадают, то можно доверять данным из полезной нагрузки.
При использовании асимметричного шифрования токен может выдаваться на одном сервере с шифрованием закрытым ключом, а проверяться на другом сервере с использованием парного открытого ключа.
Ответ написан
delphinpro
@delphinpro
frontend developer
Stateless нужно понимать ровно так, как оно звучит — без состояния.
Т.е. сервер вас не помнит, при каждом новом запросе вы должны ему сообщать кто обращается за данными. В обычном случае — это JWT токен. Он содержит информацию о текущем пользователе. Как уже сказал Rsa97 — токен самодостаточен. Как минимум на википедии, как максимум, в куче статей в интернете есть информация, как создается и как валидируется этот токен. Если вы используете какой-либо фреймворк, то у вас уже есть готовые абстракции для обработки токенов или полностью для аутентификации на основе токенов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
24 окт. 2020, в 17:21
1 руб./за проект
24 окт. 2020, в 16:51
5000 руб./за проект
24 окт. 2020, в 16:48
3000 руб./за проект