在REST应用程序的GET请求中返回验证错误(400)正确吗?

在REST应用程序的GET请求中返回验证错误(400)正确吗?,rest,Rest,我正在构建REST应用程序,需要通过GET参数实现过滤。例如,使用某些特定类型筛选对象: example.com/api/objects/?type=some_type 问题: 如果输入的类型不正确,REST端点应该返回什么 示例:端点接收请求 example.com/api/objects/?type=other_type 对于对象,不允许使用其他类型 我必须返回什么错误代码 (我的版本: 400-因为输入无效,但很奇怪-GET请求返回400错误 422-我不确定这是否是逻辑错误 返回空响

我正在构建REST应用程序,需要通过GET参数实现过滤。例如,使用某些特定类型筛选对象:

example.com/api/objects/?type=some_type
问题:

如果输入的类型不正确,REST端点应该返回什么

示例:端点接收请求

example.com/api/objects/?type=other_type
对于
对象
,不允许使用
其他类型

我必须返回什么错误代码

(我的版本:

400-因为输入无效,但很奇怪-GET请求返回400错误

422-我不确定这是否是逻辑错误

返回空响应。
)HTTP 400错误请求是正确的,但是如果您像下面这样响应正确的错误消息,它将非常有用

{
   "code": <your error code>,
   "validation": 

   {
      "exception": "java.lang.IllegalArgumentException: Error parsing type"
    },
   "message": "Validation faild"
    "request" : "example.com/api/objects/?type=other_type"
}
{
“代码”:,
“验证”:
{
“异常”:“java.lang.IllegalArgumentException:分析类型时出错”
},
“消息”:“验证失败”
“请求”:“example.com/api/objects/?type=其他类型”
}

请您补充解释一下为什么代码400是正确的,好吗?(一些链接或自己解释)。10.4.1 400错误请求由于语法错误,服务器无法理解该请求。未经修改,客户端不应重复请求。