簡體   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