HTTP POST 中的 HTTP 状态代码和响应正文用于数据验证

HTTP Status code and Response Body in HTTP POST for data validation

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

例如

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

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

我对 HTTP 状态码有些疑惑。

但如果 JSON 有效(所有请求的参数都正确且类型正确)但参数不遵守定义的规则 (A + B < C) 应该是什么HTTP 状态?

是否需要区分HTTP Status和Validation rules Status?

干杯

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

如果你想让其他人更容易处理有效消息,我可能 return 2xx 只有 如果消息完全有效,在所有其他情况下 return 4xx。在这种情况下,调用者不需要解析结果,这使得它易于使用。

如果用例是提供一些其他人用来分析消息的分析服务,而不是专门使用消息本身,那么我会 return 2xx 结果如下除非无法解析消息(例如 json),否则需要分析 4xx

您的响应必须是 400,并带有以下消息:"Bad Request: parameters don't respect the rules"。 400 错误

这就是状态代码 422 ("Unprocessable Entity") 的设计目的。

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