@SONce

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

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

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

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

Но вот клиент прислал запрос, в нем есть токен.
Как этот токен проверять? Хранить гдето в кеше token = user_id? Разве это не стейт? А если нет то чем это отличается о тойже сессии? А от куки?
  • Вопрос задан
  • 2971 просмотр
Пригласить эксперта
Ответы на вопрос 3
xez
@xez
TL 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 — токен самодостаточен. Как минимум на википедии, как максимум, в куче статей в интернете есть информация, как создается и как валидируется этот токен. Если вы используете какой-либо фреймворк, то у вас уже есть готовые абстракции для обработки токенов или полностью для аутентификации на основе токенов.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы