如何检查带有{Id}的项目是否存在?
我猜最好的选择是3。除非HEAD动词被过滤。
1有意义吗? (不记得我在哪里看到这个建议) 最好将1理解为创建该项目并尝试将其插入为“ Id”,在这种情况下,如果成功则返回200(而不是404)
答案 0 :(得分:2)
如何测试带有{id}的项目是否存在?
REST实际上并没有项目,它有资源(资源可能是指一个项目-但这实际上是实现细节)。
此外,“存在”并不是REST中真正的概念
资源可以映射到空集,从而可以在对该概念的任何实现之前对一个概念进行引用-这种概念对于Web之前的大多数超文本系统来说都是陌生的
404
不会告诉您资源不存在-它告诉您该资源当前没有可用的表示形式。并非完全相同。
说...
如果您尝试向源服务器发送有关资源的消息,并且想要确保这样做不会对财产造成损害,那么正确的做法是对safe使用其中一种方法语义。
如果请求方法的定义语义本质上是只读的,则它们被认为是“安全的”。也就是说,由于对目标资源应用了安全的方法,客户端不会请求也不会期望原始服务器上的任何状态更改。
因此,在您的列表中,GET
或HEAD
是合适的,但不适合POST
(因为POST没有安全的语义)。