У меня есть JSON REST API. Рукопожатие даст вам токен, действительный в течение 15 минут. Все звонки, которые вы делаете в течение этих 15 минут, должны работать нормально. Через 15 минут я возвращаю объект ошибки (включая код, сообщение, success = false), но мне также было интересно, какой код ошибки HTTP я должен вернуть? И не испортит ли использование кода ошибки HTTP некоторых клиентов? (HTML5, iPhone, Android). Что считается лучшей практикой в этом сценарии?
web-services
rest
api-design
BuddyJoe
источник
источник
Ответы:
Вы должны вернуть
401 Unauthorized
код состояния. Вы можете дополнительно предоставить гипермедиа для повторной установки токенаПодумайте, что происходит в веб-приложении. Вы заходите, скажем, на банковский сайт. Если не авторизован, он отправит вас на страницу входа в систему. Затем вы входите в систему и можете немного поработать. Затем он истекает, и цикл повторяется.
Просто мысль.
источник
согласно спецификации rfc6750 - «Структура авторизации OAuth 2.0: использование токена-носителя», https://tools.ietf.org/html/rfc6750 , стр.8, раздел 3.1, сервер ресурсов должен возвращать 401:>
источник
FWIW Facebook использует 400 с настраиваемым ответом JSON. Я лично предпочел бы 401 с настраиваемым ответом JSON.
Вот тело ответа FB:
{ "error": { "message": "Error validating access token: Session has expired on Jul 17, 2014 9:00am. The current time is Jul 17, 2014 9:07am.", "type": "OAuthException", "code": 190, "error_subcode": 463 } }
источник