当未在服务器上实现路由时,应返回404还是501?

问题描述 投票:0回答:1

当某些路由尚未实现并且不存在资源时,我总是返回404。例如,如果我有一个返回/api/people处的人的API,如果我尝试get/api/animals处的对象,我将返回404。

我的一个同事说404仅用于未找到的资源,就像我尝试get /api/people/100,但没有ID为100的人。对于/api/animals,他将返回501。

对我来说,501的含义是当我有一条不支持其中一种方法的路由时,例如我可以get /api/people/3但不能delete

我决定看一下specification

404(未找到)状态代码表示源服务器未找到目标资源的当前表示或不愿意透露其存在]。 404状态码不表示这种缺乏表示是暂时的还是永久的;如果原始服务器大概通过某种可配置的方式知道该条件很可能是永久性的,则与404相比,首选410(已消失)状态代码。


501(未实现)状态代码表示服务器不支持满足请求所需的功能

。当服务器无法识别请求方法并且不支持任何资源时,这是适当的响应。

对我来说,规范似乎有点模棱两可。同时,有争议的是,原始服务器没有找到/api/animals(404),也确实是原始服务器没有实现满足请求的方法(501)。

在这种情况下,最适合返回的状态码是什么?

当某些路由尚未实现并且不存在资源时,我总是返回404。例如,如果我有一个返回/ api / people处的人的API,如果我试图在/ api / animals上获取一个对象,我就是...

rest http http-status-code-404 http-status-codes
1个回答
0
投票

[如果您去一家书店,要求柜台后面的人从架子上拿出“最好的100个蛋糕”,而这本书没有现货,他们会回来的,并礼貌地说:“对不起,我不能找到那本书”。在图书查找系统中将其自动化,它将返回404。

书店的管理者不会出现,而是找您的书的人告诉您:“我怕我们不支持找那本书,因为我们的员工只能找我们拥有的书。”( 501)。

© www.soinside.com 2019 - 2024. All rights reserved.