Это концептуальный вопрос.
У меня есть клиентское (мобильное) приложение, которое должно поддерживать действие входа в систему с веб-службой 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 (запрос) авторизирован с действительными учетными данными или без них.
Я хотел бы услышать некоторые оправданные мнения так или иначе. Каков стандартный способ решения этой проблемы и является стандартным способом обработки этого логически подходящего?