当前位置: 首页 > 知识库问答 >
问题:

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

柳俊彦
2023-03-14

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

前任。

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

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

我对HTTP状态代码有一些疑问。

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

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

  • 200,而不是回答正文中的解释
  • 400以及回复正文中的解释

是否需要区分HTTP状态和验证规则状态?

干杯

共有3个答案

涂溪叠
2023-03-14

您的响应需要是400,并有以下消息:“错误请求:参数不尊重规则”。400错误

竺承望
2023-03-14

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

如果您想让其他人更容易处理有效的消息,只有当消息完全有效时,我可能会返回2xx,并且在所有其他情况下返回4xx。在这种情况下,调用方不需要解析结果,这使得处理变得容易。

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

东方旺
2023-03-14

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

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

 类似资料:
  • 我使用curl获取http头以查找http状态代码并返回响应。我使用以下命令获取http头

  • 我想知道在REST API中应该如何响应。 有效示例: 以上是一个有效的请求,当前我的HTTP状态为200,有一个JSON响应

  • 我试图创建一个regex来捕获HTTP状态代码和curl请求的主体。下面的regex模式可以在多个在线站点上工作,但在我的Mac命令行上的shell if-语句中不匹配。是我的regex关闭了还是有其他事情发生? 我也对其他方法持开放态度(我的目标是运行Centos5的机器)。

  • 如何从的结果中获取HTTP状态?

  • 我希望返回http状态代码和响应对象。如果我只是在失败场景中返回response object,则状态返回为200。但是我希望将服务返回的状态(例如:403)与响应对象一起发送。但是下面的代码只是返回消息和状态。在这种情况下,我想要响应对象orderdetails对象,它有失败原因和其他字段。如何将对象传递回客户端有什么帮助吗?

  • 我正在使用apache的HttpClient(通过Fluent API)。当我获得响应对象时,我首先执行以下操作: 如果状态代码为4xx或5xx,我将抛出异常,或者返回内容: 这里是类型为的对象。但当我运行此程序时,我得到: 我怎样才能避开这件事?