宁静的Web服务:如何测试带有{id}的项目是否存在?

时间:2018-09-19 16:37:15

标签: rest restful-url

如何检查带有{Id}的项目是否存在?

  1. POST项/ ID => 404,它不存在。 409它存在
  2. 获取项目/ ID => 404不存在。 200存在
  3. HEAD项/ ID => 404不存在。 200存在

我猜最好的选择是3。除非HEAD动词被过滤。

1有意义吗? (不记得我在哪里看到这个建议) 最好将1理解为创建该项目并尝试将其插入为“ Id”,在这种情况下,如果成功则返回200(而不是404)

1 个答案:

答案 0 :(得分:2)

  

如何测试带有{id}的项目是否存在?

REST实际上并没有项目,它有资源(资源可能是指一个项目-但这实际上是实现细节)。

此外,“存在”并不是REST中真正的概念

  

资源可以映射到空集,从而可以在对该概念的任何实现之前对一个概念进行引用-这种概念对于Web之前的大多数超文本系统来说都是陌生的

404不会告诉您资源不存在-它告诉您该资源当前没有可用的表示形式。并非完全相同。

说...

如果您尝试向源服务器发送有关资源的消息,并且想要确保这样做不会对财产造成损害,那么正确的做法是对safe使用其中一种方法语义。

  如果请求方法的定义语义本质上是只读的,则它们被认为是“安全的”。也就是说,由于对目标资源应用了安全的方法,客户端不会请求也不会期望原始服务器上的任何状态更改。

因此,在您的列表中,GETHEAD是合适的,但不适合POST(因为POST没有安全的语义)。