Ошибка входа в RESTful: возврат 401 или пользовательский ответ
Это концептуальный вопрос.
У меня есть клиентское (мобильное) приложение, которое должно поддерживать действие входа в систему против веб-службы RESTful. Поскольку веб-служба является RESTful, это означает, что клиент принимает имя пользователя / пароль от пользователя, проверяет это имя пользователя / пароль в службе, а затем просто не забывает отправить это имя пользователя / пароль со всеми последующими запросами.
Все остальные ответы в этом веб-сервисе предоставляются в формате JSON.
Вопрос в том, когда я запрашиваю веб-службу просто для того, чтобы выяснить, является ли данное имя пользователя / пароль действительным, должен ли веб-сервис всегда отвечать данными JSON, сообщающими мне, успешно или неудачно, или он должен вернуть HTTP 200 с хорошими учетными данными и HTTP 401 на плохие полномочия.
Причина, по которой я спрашиваю, состоит в том, что некоторые другие службы RESTful используют 401 для неверных учетных данных, даже когда вы просто спрашиваете, действительны ли учетные данные. Однако я понимаю, что ответы 401 представляют собой ресурс, к которому у вас не должно быть доступа без действительных учетных данных. Но ресурс входа в систему ДОЛЖЕН быть доступен любому, поскольку цель ресурса входа в систему состоит в том, чтобы сообщить вам, действительны ли ваши учетные данные.
Иными словами, мне кажется, что запрос, как:
myservice.com/this/is/a/user/action
должен вернуть 401, если предоставлены неверные учетные данные. Но просьба вроде:
myservice.com/are/these/credentials/valid
никогда не должен возвращать 401, потому что этот конкретный URL (запрос) авторизован с действительными учетными данными или без них.
Я хотел бы услышать некоторые обоснованные мнения по этому поводу. Каков стандартный способ обработки этого, и является ли стандартный способ обработки этого логически подходящим?