Ошибка входа в систему 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 ()авторизован с действительными учетными данными или без них.

Хотелось бы услышать обоснованные мнения так или иначе по этому поводу. Каков стандартный способ обработки этого, и является ли стандартный способ обработки логически подходящим?

89
задан Matt 30 July 2012 в 01:36
поделиться