如何以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方式对此操作进行建模?
答案 0 :(得分:9)
复制=获取http://mydomain.com/book/1
粘贴= PUT http://mydomain.com/book/2或POST http://mydomain.com/book
答案 1 :(得分:1)
如果您的资源被组织为模仿分层系统,那么这只是一个问题。像文件系统一样。
我更喜欢非分层资源。文件的“路径”只是文件的属性。要复制粘贴,有两种选择。
如果您真的只想要另一个“路径”引用,请为“path”属性添加另一个条目。同一个文件“同时”在“文件夹”中。
如果您需要新版本的文件,之后有效地进行分支更改,请使用不同的“路径”属性创建新资源(不同的URI)。
要移动,只需更改“路径”属性。
如果你必须坚持分层,只需模仿文件系统如何复制粘贴和移动。
副本很简单。要复制的资源的GET。
要粘贴POST,因为您正在创建新资源,新URI。
如果您需要移动,则可能需要删除旧资源。
如果需要,您可以在删除请求中指定一个位置,允许服务器重定向在旧位置查找已移动资源的用户。
答案 2 :(得分:0)
我希望用户能够执行PUT命令来执行操作。
因此,表单数据中的变量之类的内容包含要执行的正确操作。