针对格式错误的URI api请求的HTTP 400与HTTP 404

时间:2017-06-07 00:16:16

标签: api http specifications

因此,假设我们有一个名为/guest/{guestId}的端点。此端点具有GET功能,如果您提供 guestId ,它将返回包含所有访客信息的对象。

问题是在每种情况下应该返回什么 -

guestId =""导致/guest/
guestId =" invalidId"导致/guest/invalidId

HTTP 1.1文档似乎在传递无效ID方面留有空间,但在guestId为空时建议使用404。对于无效的ID,它在技术上会命中端点,但只是给它指向错误的语法,指向400,但同时为服务器提供指向404的无效URI。

什么是事实而非基于意见的正确?

1 个答案:

答案 0 :(得分:3)

这里没有解释的余地​​。 /guest/invalidId处的资源不存在,应该返回404。

请求本身并没有真正出错#39;无论如何,它只是使用指向不存在的资源的uri。它的格式不正确,可能是在您的特定应用程序的角度(它不是一个有效的ID),但它不是从HTTP协议的角度来看。

作为一般规则,这也可能有所帮助:

如果要向客户端发出错误,并且客户端负责。您将要在400-499范围内发出错误。如果您无法找到符合特定错误条件的特定错误,那么您才真正想要使用400,因为在实践中它只是用作状态代码时没有别的真的很合适。