这里发布了一个类似的问题:REST API服务针对验证失败返回什么合适的HTTP状态代码?
上面线程中的答案指出:“例如,如果URI应该具有ISO-8601日期,而您发现它的格式错误或引用的日期是2月31日,则您将返回HTTP 400。实体主体中格式正确的XML,并且无法解析。”
但是,如果用户提交了正确格式的数据会怎样?我的意思是,用户为用户名和密码提交了简单的字母字符串/文本(这对我的应用程序完全有效)。唯一的问题是密码与用户名不匹配。在这种情况下,400将是不正确的,因为它是完全有效的语法并且格式正确。
401不正确(如此处的建议:哪个HTTP状态代码表示用户名或密码不正确?),因为用户没有尝试访问任何页面,他只是在尝试登录和输入不匹配的数据。
如果您回头看我链接到的第一篇文章,第二个回答指出422是正确的响应(并且对我来说看起来是正确的),但是,我使用的是Django Rest Framework,而422不是状态代码的一部分(可以在以下位置找到DRF的一部分状态代码列表:http : //www.django-rest-framework.org/api-guide/status-codes/#client-error-4xx)
404的外观也不正确,因为已成功接受数据并且未拒绝数据。
话虽如此,应该使用的真正正确答案是什么?