【发布时间】:2016-12-09 18:46:32
【问题描述】:
我需要为“文章”设计一个“复制”操作。
我的想法是:apibaseurl/articles/{id}/duplicates 上的 POST 并返回带有创建副本的 URI 的 200 OK,但该 URI 将符合模板 apibaseurl/articles/{id}。
但是,当向apibaseurl/articles/{id}/duplicates 发出GET 时,不一定会有重复列表(意思是:服务器不会跟踪为一篇文章创建的所有重复 - “重复”关系被忽略请求范围之外的服务器)
问题:
我建议的解决方案可以吗?
通过使创建的对象的 URI 指向不在发布它的资源下的位置,这是否违反了任何 RESTful 原则?
我是否必须让客户列出一篇文章的所有重复项?
【问题讨论】:
-
我是否正确理解您创建文章但不是使用
POST apibaseurl/articles/而是使用POST apibaseurl/articles/{id}/duplicates?你是什么意思'不一定会有重复的列表'?这将永远或永远不会返回一个集合?在哪些情况下?作为副本创建的文章是否与使用“正常”方式创建的同一文章不同? -
关于你的第一个问题:是的。这样做是为了强调创建副本的意图(即,除了生成的标识符之外的所有内容都从“源”文章复制到新文章)。
-
关于您的其他问题:目前尚不确定将来是否会有重复列表,目前没有要求。复制品与原件的不同之处仅在于其自动生成的 id。然而,它们很可能会在不久之后更新并演变成类似的东西,但在多个属性上与原始属性不同。
标签: rest architecture action