因此,假设我们有一个名为/guest/{guestId}
的端点。此端点具有GET功能,如果您提供 guestId ,它将返回包含所有访客信息的对象。
问题是在每种情况下应该返回什么 -
guestId =""导致/guest/
guestId =" invalidId"导致/guest/invalidId
HTTP 1.1文档似乎在传递无效ID方面留有空间,但在guestId
为空时建议使用404。对于无效的ID,它在技术上会命中端点,但只是给它指向错误的语法,指向400,但同时为服务器提供指向404的无效URI。
什么是事实而非基于意见的正确?
答案 0 :(得分:3)
这里没有解释的余地。 /guest/invalidId
处的资源不存在,应该返回404。
请求本身并没有真正出错#39;无论如何,它只是使用指向不存在的资源的uri。它的格式不正确,可能是在您的特定应用程序的角度(它不是一个有效的ID),但它不是从HTTP协议的角度来看。
作为一般规则,这也可能有所帮助:
如果要向客户端发出错误,并且客户端负责。您将要在400-499范围内发出错误。如果您无法找到符合特定错误条件的特定错误,那么您才真正想要使用400,因为在实践中它只是用作状态代码时没有别的真的很合适。