验证错误发生时,响应代码应该是什么?

时间:2010-10-30 12:35:45

标签: web-services http api error-code

我正在实施一个API。 API接受/返回JSON内容类型。 现在,假设某些POST请求提交的数据无效,例如缺少属性,或者存在相同数据的重复。 在这种情况下,标准的HTML响应代码是什么?

5 个答案:

答案 0 :(得分:2)

错误在于客户端,因此您希望使用4xx状态代码。我会选择400 - Bad Request

  

请求无法理解   由于语法错误导致的服务器。   客户端不应该重复   请求不加修改。

答案 1 :(得分:1)

有两个答案:

如果您已提交表单,只需返回带有HTML的200 - OK,说明未创建对象的原因。

如果您有API,则应使用以下

200 OK

  • 当请求正常并返回正确的数据时。

201已创建

  • 调用成功,创建了新对象。

400 BAD REQUEST

  • 无效的请求URI
  • 无效的HTTP标头
  • 接收不受支持的非标准参数
  • 接收无效的HTTP消息正文

401 UNAUTHORIZED

  • 授权问题。例如。错误的API密钥等

403 FORBIDDEN

  • 经过适当授权,但不允许。

404 NOT FOUND

  • 资源不存在(例如,在阅读或更新时)

405方法不允许

  • 在不允许使用给定REST方法的情况下使用。例如。单个资源上的POST,或整个资源集上的DELETE。

409 CONFLICT

  • 更新失败时,发送“冲突”以允许客户端自行解决冲突并重试。

500内部服务器错误

  • 内部错误。这是用于所有无法识别的错误的默认代码。

501未实施

  • 用于预期但尚未实现的功能。

答案 2 :(得分:0)

我能找到的最近的是400 Bad Request

答案 3 :(得分:0)

正如Ariejan所说,您应该将API基于已定义的HTTP代码。如果要发送错误消息,最好的方法应该是不使用HTTP消息,但最好在响应主体中包含消息,JSON格式化。

答案 4 :(得分:0)

422 Unprocessable Entity(请参阅RFC 4918, Section 11.2