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

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

我有一个JSON请求,我将其发送到HTTPURL。

如果这被视为400哪里requestedResource字段存在但"Roman"此字段的值无效吗?

[{requestedResource:"Roman"}]

如果这被视为400哪里"blah"场根本不存在?

[{blah:"Roman"}]


德玛西亚99
浏览 5384回答 3
3回答

繁星点点滴滴

A 400表示请求格式错误。换句话说,客户端发送到服务器的数据流不遵循规则。对于带有JSON有效负载的RESTAPI,400通常(我要说是正确的)用来表示JSON在某种程度上是无效的,根据服务的API规范。按照这种逻辑,您提供的两个场景都应该是400个。想象一下,这是XML而不是JSON。在这两种情况下,XML都不会通过模式验证-要么是因为一个未定义的元素,要么是一个不正确的元素值。这是个很糟糕的要求。这里也是一样的。

慕斯709654

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

慕姐8265434

选择HTTP响应代码非常容易,可以用简单的规则来描述。经常被遗忘的唯一棘手的部分是RFC 7231的第6.5段:除非响应HEAD请求,否则服务器应该发送包含错误情况解释的表示,以及它是临时的还是永久性的。规则如下:如果请求成功,则返回2xx代码(3xx用于重定向)。如果服务器上存在内部逻辑错误,则返回5xx。如果客户端请求中有任何错误,则返回4xx代码。查看选定类别的可用响应代码。如果其中之一的名称与您的情况非常匹配,您可以使用它。否则,只返回到x00代码(200,400,500)。如果你怀疑,回到x00代码。返回响应体中的错误描述。对于4xx代码,它必须包含足够的信息,以便客户端开发人员了解原因并修复客户端。对于5xx,由于安全原因,不需要透露任何细节。如果客户端需要区分不同的错误,并根据不同的错误有不同的反应,请定义一种机器可读和可扩展的错误格式,并在API中的任何地方使用它。从一开始就这样做是很好的做法。请记住,客户端开发人员可能会做一些奇怪的事情,并尝试解析字符串,这些字符串作为人类可读的描述返回。通过更改字符串,您将破坏如此糟糕的客户端。因此,请始终提供机器可读的描述,并尽量避免在文本中报告其他信息。因此,在您的例子中,我返回了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" }
打开App,查看更多内容
随时随地看视频慕课网APP