我正在编写一个RESTful API而且我有一个疑问。我已经创建了一个控制器来处理对未定义资源的请求(我的意思是不正确的URI,不是正确的URI但是ID不存在)。
我的第一个直觉是返回一个404状态代码来告诉客户端资源不存在(在GET请求上),但是当我开始概括逻辑来处理HEAD,OPTIONS,POST,PUT等HTTP动词,我可能最好的想法是返回405,因为实际上,它不允许在无效路由上使用这些方法(包括GET)。
在OPTIONS方法的响应中,我返回一个允许方法的空列表(我也不包括OPTIONS方法,即使它返回了一个响应)。
你怎么看?有任何想法吗?我认为这个领域有点模糊。答案 0 :(得分:0)
仅仅是我的意见,但我不认为这是解释“方法不允许”的正确方法,否则404的意义何在?根据相同的逻辑,您也可以认为它应该是403,因为禁止所有用户执行操作。
我认为这种方法是关于服务支持这种资源的操作类型,而不是资源的任何特定实例。它甚至不需要查找资源(通常),它只需要查看URL和方法,并确定这是否是可用的操作。
例如,只写资源可以在DELETE操作上返回405。
405的最常见用途可能是特定URL有效,但是对于另一种HTTP方法有效。