我有一个客户端接口,允许用户对类似树形结构的大纲执行多个编辑操作。我认为这个大纲的构成记录总体上是一个单一的资源(/outlines/39),即使它的部分可以通过不同的URL作为单独的资源进行访问。
问题在于用户既可以编辑大纲中现有的节点,也可以向其中添加新节点。通常,当你编辑某个内容时,你会使用PUT方法进行更新,当你添加新内容时,你会使用POST方法;然而,在某些情况下,您可能希望将所有更改(包括添加和编辑)都包装在一个单一的事务中。人们如何处理这种情况呢?
尽管大纲已经存在,PUT方法似乎是适当的,但嵌入式的添加违反了PUT方法的幂等性。我不确定POST方法是否也适合。出于设计目的,我决定不保存用户进行的每个离散更新,尽管我想这提供了一种解决方案。仍然,肯定有其他人已经处理过我的问题或者对此有想法。