如何在REST中实现资源的复制粘贴?

时间:2009-05-13 18:00:37

标签: rest copy-paste

如何以RESTful方式实现复制粘贴支持?

假设我有书店资源。每家商店都有书籍

http://mydomain.com/rest/book-stores/1
http://mydomain.com/rest/book-stores/1/books/12

我需要客户端能够将书籍的复制粘贴调用到另一个商店。

实施以下内容:

PUT http://mydomain.com/rest/books/1/copy-paste

似乎非常喜欢RPC。您是否有任何建议如何以RESTful方式对此操作进行建模?

3 个答案:

答案 0 :(得分:9)

答案 1 :(得分:1)

如果您的资源被组织为模仿分层系统,那么这只是一个问题。像文件系统一样。

我更喜欢非分层资源。文件的“路径”只是文件的属性。要复制粘贴,有两种选择。

  1. 如果您真的只想要另一个“路径”引用,请为“path”属性添加另一个条目。同一个文件“同时”在“文件夹”中。

  2. 如果您需要新版本的文件,之后有效地进行分支更改,请使用不同的“路径”属性创建新资源(不同的URI)。

  3. 要移动,只需更改“路径”属性。

  4. 如果你必须坚持分层,只需模仿文件系统如何复制粘贴和移动。

    副本很简单。要复制的资源的GET。

    要粘贴POST,因为您正在创建新资源,新URI。

    如果您需要移动,则可能需要删除旧资源。

    如果需要,您可以在删除请求中指定一个位置,允许服务器重定向在旧位置查找已移动资源的用户。

答案 2 :(得分:0)

我希望用户能够执行PUT命令来执行操作。

因此,表单数据中的变量之类的内容包含要执行的正确操作。