2015-10-23 6 views
4

Я даю общий пользовательский логин/выход из примера о обсуждении HTTP method и status code. Надеюсь, это поможет людям легко понять.Как определить метод HTTP и код состояния входа и выхода из системы?


Традиционная не успокоительное дизайн апи:

Когда пользователь Войти/выход из системы веб-сайта, это обязательно, чтобы получить доступ серверной службы по HTTP запросу POST метода.

Это не вопрос.


Но если я последую за спокойным рисунком апи, все еще он будет спроектирован?

Моя мысль:

  • Войти

Login будет генерировать маркер ключ, когда пользователь входа в систему. Я думаю, что это действие для создания базы данных, поскольку генерирует токен-ключ, поэтому он должен вернуть код состояния 201 Created?

  • Выход

Относительно, Logout удалит ключ маркера, когда пользователь отправить его маркер и сделать выход из системы. Я думаю, что это действие удаления для db, поскольку удаление ключа токена, так что должно ли оно возвращать 204 No content код статуса?

Хотя я думаю, что это, возможно, вписывается в смысл метода HTTP, если я предлагаю или разделяю этот дизайн API, делает ли это заблуждение другого разработчика?

Я не знаю, эта идея есть или не является хорошей. Я хочу послушать ваше мнение.

ответ

3

Я не думаю, что сценарий, который вы описываете, будет смущать разработчиков. По моему опыту, редко бывает, что вы будете иметь специальную обработку около 200, 201 или 204, тогда как типичный случай - code >= 200 && code < 300. Ваша логика не является необоснованной. Если вы возвращаете токен, 201 будет разумным и 204, если вы не возвращаете какой-либо контент.

Однако, создавая маркер действительно побочный эффект вас входа в систему. POST /login не создает login ресурс как POST /items бы создание item и API лексемы не являются типичными ресурсами. По этой причине 200 OK будет более уместным, так как вы действительно просто даете пользователю разрешение переходить на защищенные ресурсы, хотя и создавая токен. Если вы посмотрите вокруг примеров аутентификации, кажется, что отправкой 200 или перенаправлением пользователя являются типичные решения.

+0

Эти строки **, генерирующие токен, действительно являются побочным эффектом входа в систему ** standout - напоминание о разделении проблемы для дизайна API. – Abhijeet