HTTP POST中的HTTP状态代码和响应主体,用于数据验证

时间:2019-01-04 09:22:21

标签: validation http http-status-codes

让我们假设有一个HTTP POST,它接受带有一些数据的JSON作为输入,并且它必须验证这些数据。该方法还应该在响应正文中返回一条验证消息。

例如。

{
   "A" : 1,
   "B" : 1,
   "C" : 3
}

假设在JSON上定义了一些验证规则,例如(A + B)应该小于C参数。

我对HTTP状态代码有疑问。

  • 如果JSON有效,则HTTP POST应返回200
  • 如果JSON无效(缺少参数或类型错误),则HTTP POST应返回400

但是,如果JSON有效(所有请求的参数和类型正确),但这些参数不符合定义的规则(A + B

    200而不是响应正文中的解释?
  • 400和响应正文中的解释?

是否需要将HTTP状态与验证规则状态区分开?

欢呼

3 个答案:

答案 0 :(得分:3)

这就是状态代码422(“无法处理的实体”)的设计目的。

请参见https://www.greenbytes.de/tech/webdav/rfc4918.html#STATUS_422

答案 1 :(得分:1)

这完全取决于您要实现的用例/功能。

如果您想让其他人更轻松地处理有效消息,则我可能只在消息完全有效的情况下才返回2xx ,而在其他所有情况下都返回{{ 1}}。在这种情况下,调用方不需要解析结果,这使得操作起来很容易。

如果用例要提供一些其他人将用来分析消息的分析服务,而不是专门用于消息本身,那么我将返回4xx及其分析结果,除非消息不能被解析(例如,不是json),在这种情况下,2xx是必要的。

答案 2 :(得分:1)

您的响应必须为400,并显示以下消息:“错误的请求:参数不遵守规则”。 400错误