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 有效,HTTP POST 应该 returns 200
- 如果 JSON 无效(缺少参数或类型错误),HTTP POST 应该 returns 400
但如果 JSON 有效(所有请求的参数都正确且类型正确)但参数不遵守定义的规则 (A + B < C) 应该是什么HTTP 状态?
- 200 而不是响应正文中的解释?
- 400和响应正文中的解释?
是否需要区分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。
让我们假设有一个 HTTP POST 接受带有一些数据的 JSON 作为输入并且它必须验证这些数据。该方法还应 return 响应正文中的验证消息。
例如
{
"A" : 1,
"B" : 1,
"C" : 3
}
假设在 JSON 上定义了一些验证规则,例如 (A + B) 应该小于 C 参数。
我对 HTTP 状态码有些疑惑。
- 如果 JSON 有效,HTTP POST 应该 returns 200
- 如果 JSON 无效(缺少参数或类型错误),HTTP POST 应该 returns 400
但如果 JSON 有效(所有请求的参数都正确且类型正确)但参数不遵守定义的规则 (A + B < C) 应该是什么HTTP 状态?
- 200 而不是响应正文中的解释?
- 400和响应正文中的解释?
是否需要区分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。