【问题标题】:What HTTP status code should one use for invalid input对于无效输入,应该使用什么 HTTP 状态代码
【发布时间】:2015-01-03 01:56:51
【问题描述】:

在我的网络服务中,我将输入处理为 json。当提供的输入无效时使用什么正确的 HTTP 状态代码,尤其是对于 PUT 和 POST 请求?

我能找到的唯一似乎适用的响应代码是“400 Bad Request”,但也许有更好的东西?

这个问题我实际上有两个可能不同的具体案例:

a) 服务器不喜欢 JSON 输入,因为无法接受属性/值,或者
b) 服务器无法解析 JSON 格式的输入,因为数据未正确格式化为 JSON。

示例:如果服务器期望

{ 
  "POSTDATA": {
     "val1":"123", 
     "val2":"xyz"
   }
}

客户提供了一些我们不知道如何处理的东西

{ 
    "val1":"bar", 
    "val2":"biz"
}

或者客户给了一些无聊的东西,例如

{
"valA":"123",
skjfhasklfhakppffffzzzzz....

怎么办?

【问题讨论】:

  • 我认为这可能会引起不同方面的强烈意见。我不认为错误请求代码是合适的,因为 对我 表明 HTTP 请求是错误的 - 但事实并非如此。我怀疑其他人会强烈反对。不过,我不确定我是否会暂时搁置它。也许这里有一个强大的标准?
  • 您的第一个错误示例将是 422 Unprocessable Entity 的候选者

标签: json web-services http-post http-status-codes


【解决方案1】:

415 Unsupported media type. 源服务器拒绝为请求提供服务,因为负载的格式不受支持。

【讨论】:

  • 我不喜欢这个。如果请求指定了 application/text 并且服务器需要 application/json,那么 Yes 415 是正确的响应。但是如果应用程序提供了无效的 json,但正确指定了application/json,那么响应不应该是“尝试另一种媒体类型”,这就是我理解的 415 的意思,它应该说“你的媒体类型正确但数据已损坏/ 无效。所以我最终只解决了 400 个无效请求。唯一的问题是我对无效请求使用相同的代码,但根据业务需求是无效的。
猜你喜欢
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2014-05-29
  • 2016-04-14
  • 2013-08-16
  • 2021-12-21
  • 1970-01-01
  • 2014-01-03
相关资源
最近更新 更多