我有一个客户端界面,允许用户对树形轮廓执行多个编辑。尽管可以通过不同的URL作为单独的资源访问其部分,但我认为构成该大纲的记录总体上是单个资源(/概要/ 39)。通过REST更新结构化资源的最佳实践?
问题是用户可以编辑大纲中的现有节点以及向大纲添加新节点。通常,当您编辑某些内容时,请将其更改以及添加新内容时发布;但是,在某些情况下,您希望在单个事务中包含所有更改(包括添加和编辑)。人们如何处理这些问题有哪些实用的方法?
尽管轮廓已经存在并且PUT看起来合适,但嵌入式添加会违反PUT的幂等性。我不确定POST是否合适。出于设计目的,我决定不保存用户所做的每个独立更新,但我想这提供了一个解决方案。尽管如此,还必须有其他人处理我的问题或对此有所了解。
没有自然键,但是这使我认为,服务器(或客户)能当我创建新的节点时,会出现临时指导。通过这种方式,记录可以通过其ID和GUID识别。通过使用GUID,如果用户未能提交整个事务,我不会最终消耗ID。在这个说明中,它引出了使用guid作为PK而不是身份种子的问题。会给它一些想法。谢谢。 – Mario 2009-11-17 19:45:20
有趣!很高兴我能帮上忙。 – 2009-11-17 21:11:01
经过进一步调查,我已经决定一个PUT只有永远是正确的,如果你是整个资源的投入。由于我只是将PUTTING DELETE(添加/更新/删除的节点),我认为将PUT返回到子资源URL更有意义,类似于您的事务子资源建议。我还没有弄清楚细节。 – Mario 2009-11-18 16:21:39