如何决定在未定义的REST路由上返回404或405状态

时间:2015-08-07 13:10:36

标签: rest http http-headers

我正在编写一个RESTful API而且我有一个疑问。我已经创建了一个控制器来处理对未定义资源的请求(我的意思是不正确的URI,不是正确的URI但是ID不存在)。

我的第一个直觉是返回一个404状态代码来告诉客户端资源不存在(在GET请求上),但是当我开始概括逻辑来处理HEAD,OPTIONS,POST,PUT等HTTP动词,我可能最好的想法是返回405,因为实际上,它不允许在无效路由上使用这些方法(包括GET)。

在OPTIONS方法的响应中,我返回一个允许方法的空列表(我也不包括OPTIONS方法,即使它返回了一个响应)。

你怎么看?有任何想法吗?我认为这个领域有点模糊。

1 个答案:

答案 0 :(得分:0)

仅仅是我的意见,但我不认为这是解释“方法不允许”的正确方法,否则404的意义何在?根据相同的逻辑,您也可以认为它应该是403,因为禁止所有用户执行操作。

我认为这种方法是关于服务支持这种资源的操作类型,而不是资源的任何特定实例。它甚至不需要查找资源(通常),它只需要查看URL和方法,并确定这是否是可用的操作。

例如,只写资源可以在DELETE操作上返回405。

405的最常见用途可能是特定URL有效,但是对于另一种HTTP方法有效。