让我们假设有一个HTTP POST,它接受带有一些数据的JSON作为输入,并且它必须验证这些数据。该方法还应该在响应正文中返回一条验证消息。
例如。
{
"A" : 1,
"B" : 1,
"C" : 3
}
假设在JSON上定义了一些验证规则,例如(A + B)应该小于C参数。
我对HTTP状态代码有疑问。
但是,如果JSON有效(所有请求的参数和类型正确),但这些参数不符合定义的规则(A + B 是否需要将HTTP状态与验证规则状态区分开? 欢呼
200而不是响应正文中的解释?
答案 0 :(得分:3)
这就是状态代码422(“无法处理的实体”)的设计目的。
请参见https://www.greenbytes.de/tech/webdav/rfc4918.html#STATUS_422。
答案 1 :(得分:1)
这完全取决于您要实现的用例/功能。
如果您想让其他人更轻松地处理有效消息,则我可能只在消息完全有效的情况下才返回2xx
,而在其他所有情况下都返回{{ 1}}。在这种情况下,调用方不需要解析结果,这使得操作起来很容易。
如果用例要提供一些其他人将用来分析消息的分析服务,而不是专门用于消息本身,那么我将返回4xx
及其分析结果,除非消息不能被解析(例如,不是json),在这种情况下,2xx
是必要的。
答案 2 :(得分:1)
您的响应必须为400,并显示以下消息:“错误的请求:参数不遵守规则”。 400错误