restful web service:如何测试{id}项是否存在?

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

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

  1. POST项目/ Id => 404它不存在。 409它存在
  2. GET item / Id => 404不存在。 200它存在
  3. HEAD项目/ Id => 404不存在。 200它存在

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

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

rest restful-url
1个回答
2
投票

如何测试{id}项是否存在?

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

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

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

404没有告诉您资源不存在 - 它告诉您该资源当前没有可用的表示。不完全是一回事。

那说......

如果您尝试向源服务器发送有关资源的消息,并希望确保这样做不会对属性造成任何损害,那么正确的做法是使用safe语义中的一种方法。

如果请求方法的定义语义基本上是只读的,则被认为是“安全的”;即,作为对目标资源应用安全方法的结果,客户端不请求并且不期望源服务器上的任何状态改变。

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

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