2015-06-02 5 views
2

В настоящее время я читаю REST, и одна из спецификаций REST заключается в том, что она должна быть без гражданства и что каждый запрос должен содержать необходимое состояние в URL-адресе или в теле запроса. Это контрастирует с практикой использования сеансов, что очень полезно для поддержания информации, например, независимо от того, зарегистрирован пользователь или нет. Итак, если вы хотите создать RESTful API, следует ли избегать сеансов?Сессии в RESTful API

ответ

2

Ну, да, по крайней мере, на стороне сервера. Фактически, это своего рода точка REST: REpresentational State Transfer. Убедившись, что вся необходимая информация о состоянии содержится в состоянии, передаваемом через HTTP, и исключая состояние сеанса на стороне сервера, оно позволяет создавать легко масштабируемые, расширяемые обратные концы.

В старые времена нам пришлось беспокоиться о состоянии сеанса, обслуживании сеансов, связях с постоянным доступом, балансировке нагрузки с учетом состояния и так далее. С REST все это устранено.

Итак, вот викторина поп-музыки: как вы поддерживаете состояние для таких вещей, как статус входа без серверная сторона состояние? Он подсказка: HTML - это не единственное состояние, которым клиент управляет для вас.

+0

Итак, чтобы сохранить такие элементы, как статус входа в систему без состояния на стороне сервера, одним из возможных способов было бы включить имя пользователя и пароль с каждым запросом клиента? Но разве это немного небезопасно? – Jatinshravan

+1

Да, это было бы возможно. Теперь подумайте о куках и шифровании. Вы можете сделать идентификатор сеанса или идентификатор удостоверения личности, криптографически подписать их и передать их. Вот пример из учебника Ruby on Rails: https://www.railstutorial.org/book/log_in_log_out –