繁体   English   中英

REST API POST-检查每个嵌套对象是否存在。 如果否,请创建新的。 如果是,则返回现有对象

[英]REST API POST - Check if each nested object exists. If no, create new. If yes, return existing object

我是RESTful API设计实践的新手,正在寻求帮助。 我正在使用的数据模型详细介绍了包含嵌套对象(例如Chapters)列表的顶级对象(例如Book)。
每个章simple_name自己的权利保留,并具有一个simple_name字段,该字段设置为unique=True (即,可能只有一个带有Chapter.simple_name =“ ch_01”的章)。

场景 :用户发布包含章节“ ch_01”,“ ch_02”和“ ch_03”的一本书(“ myBook_v1”)。 然后,用户编辑他们的书,并在第二天发布包含章节“ ch_01”,“ ch_02”,“ ch_03” 和“ ch_04”的 POST “ myBook_v2” 假设章节“ ch_01”,“ ch_02”,“ ch_03”与原始POST相同。

当前,由于simple_name必须是唯一的,因此第二个POST无法通过唯一性验证,并且错误响应会返回给用户。

问题 :以下实现是否符合REST设计原则? 而且,最重要的是,这是一个好的(安全的)设计选择吗?

实现 :在Book POST上,检查每个Chapter.simple_name的唯一性。 如果数据库中已经存在Chapter.simple_name ,请跳过创建。 如果不存在,请创建新的章节。 返回完整的持久化书籍,其中包含新创建的章节和已经存在的章节。 决定创建新的或使用现有的唯一标准是数据库中某个章节是否已经存在用户指定的simple_name

这里的想法是通过删除关联的验证器来消除唯一性约束,然后自行处理添加/更新/删除(请参阅Django Rest Framework上的嵌套序列化程序的唯一验证 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM