移动操作的REST约定

移动操作的REST约定,rest,Rest,调用移动资源是否有REST约定?我想将项目(如项目1)从位置loc1移动到位置loc2。我可以执行删除/插入操作,但这需要两个单独的调用。我怎么能只打一个电话?我考虑过几种可能性,比如: http://someapi.com/location/loc1/items/item1/location/loc2/move-item 但我觉得这很尴尬。在该URI中,第二个位置似乎是该项的属性。切换loc2和item会使它看起来像loc2是loc1的属性,这又是一件尴尬的事情。如你所见,我完全糊涂了,有什

调用移动资源是否有REST约定?我想将项目(如项目1)从位置loc1移动到位置loc2。我可以执行删除/插入操作,但这需要两个单独的调用。我怎么能只打一个电话?我考虑过几种可能性,比如:

http://someapi.com/location/loc1/items/item1/location/loc2/move-item
但我觉得这很尴尬。在该URI中,第二个位置似乎是该项的属性。切换loc2和item会使它看起来像loc2是loc1的属性,这又是一件尴尬的事情。如你所见,我完全糊涂了,有什么建议吗

如你所见,我完全糊涂了,有什么建议吗

在REST中,标识符是标识符。它们没有任何与之关联的域语义。您可以对资源使用任何拼写

您的资源通常是启示——关于事物的文档,或者支持做事情的协议的文档。想想有链接和表单的网页

POST /4e52bfd1-87d0-4cf1-8b45-175fb13294f3
是用于不值得标准化的请求消息的正确方法令牌

目标URI通常会标识我们期望被请求更改的某些资源。选择此选项的原因是,它为我们提供了免费的客户端/中间缓存

描述这个不值得标准化的方法所需的大多数语义信息都属于有效负载,而不是URI

POST /4e52bfd1-87d0-4cf1-8b45-175fb13294f3
Content-Type: text/plain

Please move /4e52bfd1-87d0-4cf1-8b45-175fb13294f3 to /fc32bf42-b757-4ae2-b164-2cb61e3ca8fd
一个资源可能会接受几种不同类型的请求,这些请求都使用POST方法,这是很正常的。服务器可以根据有效载荷来考虑,例如,多个Web窗体,所有的Web窗体都指向相同的资源-它工作得很好,但是您需要以足够的形式包含足够的信息,以便服务器能够确定请求的含义。 对于移动语义,WebDAV规范确实定义了一个方法令牌。如果这些标准化语义与您想要做的匹配,那么支持它可能是合适的。我本人倾向于避免使用WebDAV——我对WebDAV兼容资源的限制持怀疑态度,因此,我有点担心当使用WebDAV方法令牌之一时,通用客户机有权对资源做出什么样的假设。也许可以吧?可能不好吧?但我所寻找的显然比使用POST更好,我看不出这一点

我得承认我对其他的事情还是很困惑

这不是你的错:很多人都被其他的事情弄糊涂了。有更多的误导性噪音比没有信号

可能有帮助的三次会谈:

吉姆·韦伯,2011- Stefan Tilkov,2014- 乔恩·摩尔,2010-
感谢您的详细回答,我将尝试遵循关于不值得标准化方法的建议。但我必须承认,我仍然对剩下的事情感到困惑,对于简单的操作来说,这是完全可以的,但移动并不简单。