的HTTP/1.1规范(RFC 2616)具有以下对的意义上说的状态代码400,错误的请求(§10.4.1) :
由于语法格式错误,服务器无法理解请求.客户端不应该在没有修改的情况下重复请求.
现在,在一些基于HTTP的API中似乎存在一种普遍的做法,即使用400来表示请求的逻辑错误而不是语法错误.我的猜测是API这样做是为了区分400(客户端引发)和500(服务器引发).使用400表示非语法错误是否可接受或不正确?如果可以接受,RFC 2616上是否有注释参考,可以更深入地了解400的预期用途?
例子:
在我的Rest应用程序中,资源url还支持查询参数,如pageSize,pageNum,name等.所以请求网址看起来像
/资源/ {ID}?页次= 1&的pageSize = 25&DESC = "你好"
现在假设一个客户端添加一个额外的查询参数,说'lang',我的服务器不支持
/ resource/{id}?pageNum = 1&pageSize = 25&desc ="hello"&lang ="eng",但我的服务器不支持任何lang参数.
什么应该是最好的设计决定
选项1:忽略额外的无效查询参数并提供请求.
选项2:向客户端抛出错误的请求消息.
感谢Advance Singla