为了账号安全,请及时绑定邮箱和手机立即绑定

400错误请求HTTP错误代码意味着?

400错误请求HTTP错误代码意味着?

德玛西亚99 2019-06-20 17:17:49
400错误请求HTTP错误代码意味着?我有一个JSON请求,我将其发送到HTTPURL。如果这被视为400哪里requestedResource字段存在但"Roman"此字段的值无效吗?[{requestedResource:"Roman"}]如果这被视为400哪里"blah"场根本不存在?[{blah:"Roman"}]
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

A 400表示请求格式错误。换句话说,客户端发送到服务器的数据流不遵循规则。

对于带有JSON有效负载的RESTAPI,400通常(我要说是正确的)用来表示JSON在某种程度上是无效的,根据服务的API规范。

按照这种逻辑,您提供的两个场景都应该是400个。

想象一下,这是XML而不是JSON。在这两种情况下,XML都不会通过模式验证-要么是因为一个未定义的元素,要么是一个不正确的元素值。这是个很糟糕的要求。这里也是一样的。


查看完整回答
反对 回复 2019-06-20
?
慕斯709654

TA贡献1840条经验 获得超5个赞

从…w3.org

10.4.1 400不良请求

由于格式错误,服务器无法理解请求。客户端不应在没有修改的情况下重复请求。


查看完整回答
反对 回复 2019-06-20
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

选择HTTP响应代码非常容易,可以用简单的规则来描述。经常被遗忘的唯一棘手的部分是RFC 7231的第6.5段:

除非响应HEAD请求,否则服务器应该发送包含错误情况解释的表示,以及它是临时的还是永久性的。

规则如下:

  1. 如果请求成功,则返回2xx代码(3xx用于重定向)。如果服务器上存在内部逻辑错误,则返回5xx。如果客户端请求中有任何错误,则返回4xx代码。
  2. 查看选定类别的可用响应代码。如果其中之一的名称与您的情况非常匹配,您可以使用它。否则,只返回到x00代码(200,400,500)。如果你怀疑,回到x00代码。
  3. 返回响应体中的错误描述。对于4xx代码,它必须包含足够的信息,以便客户端开发人员了解原因并修复客户端。对于5xx,由于安全原因,不需要透露任何细节。
  4. 如果客户端需要区分不同的错误,并根据不同的错误有不同的反应,请定义一种机器可读和可扩展的错误格式,并在API中的任何地方使用它。从一开始就这样做是很好的做法。
  5. 请记住,客户端开发人员可能会做一些奇怪的事情,并尝试解析字符串,这些字符串作为人类可读的描述返回。通过更改字符串,您将破坏如此糟糕的客户端。因此,请始终提供机器可读的描述,并尽量避免在文本中报告其他信息。

因此,在您的例子中,我返回了400个错误,如果从用户输入中获得“Roman”,客户端必须有特定的反应:

{
    "error_type" : "unsupported_resource",
    "error_description" : "\"Roman\" is not supported"
}

或者更一般的错误,如果这种情况在客户端是一个糟糕的逻辑错误,并且是不被期望的,除非开发人员做错了什么:

{
    "error_type" : "malformed_json",
    "error_description" : "\"Roman\" is not supported for \"requestedResource\" field"
}


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 5383 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信