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