亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

補丁與合并補丁哪個合適?

補丁與合并補丁哪個合適?

肥皂起泡泡 2022-11-10 16:43:19
嘗試查看哪些模型最適合api(低更新,但對象結構可能經常更改,高讀取應用程序)我有這樣的資源史詩(id、名稱、描述、開始日期、結束日期、狀態、 故事)故事(id、名稱、描述、開始日期、結束日期、狀態、任務)任務(id、名稱、描述、開始日期、解決日期、解決方案)如果我只需要支持這些更新,更新史詩名稱或描述或日期或狀態更新故事名稱或描述或日期或狀態更新任務名稱或描述或日期或狀態這有道理嗎?PATCH和application/merge-patch+json RFC 7396資源應該匹配目標對象結構史詩/{id}史詩/{id1}/stories/{id2} .. 等等PATCHwithapplication/json -我傾向于選擇這個,因為沒有必要如此嚴格地執行RFC 7396和靈活地更新更新規則。您要更新的自定義規則(但從技術上講 - 我可以只發送需要更新的資源屬性,類似于application/merge-patch+json)史詩/{id}史詩/{id1}/stories/{id2} .. 等等PUT和application/json資源應匹配所有字段并創建新對象并替換(或作弊并僅像補丁一樣更新)史詩/{id}史詩/{id1}/stories/{id2} .. 等等PUT和application/json或作弊,只更新補丁,但使用 put史詩/{id}史詩/{id1}/stories/{id2} .. 等等
查看完整描述

1 回答

?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

從 REST 的角度來看,要記住的重要一點是統一的接口——你有一些具有application/json表示的資源。我可以GET代表您,并使用我最喜歡的任何工具對其進行本地編輯。


如果我想提議更改資源以匹配我的表示,我們從 HTTP 協議中選擇適當的方法。換句話說,HTTP 中的方法都是“通過網絡傳輸此文檔”域的一部分。(參考:吉姆·韋伯,2011 年)。


因此,實際上,支持“所有這些”是確保可以使用最廣泛的通用客戶端與您的資源交互的方法。


PUT /31E772D3-0157-4B52-8243-75EEAB946E65

Content-Type: application/json

完全合理的起點;它有幾個優點 - 語義是冪等的,因此客戶端知道丟失的請求可以重復,并且 HTTP PUT包含重要用例的語義,例如我們接受您的表示,這樣可以減少網絡壓力。


當表示遠大于更改時,PUT 可能是一個不幸的選擇。


PATCH /31E772D3-0157-4B52-8243-75EEAB946E65

Content-Type: ????

這是處理對大型表示的微小更改的一種完全合理的方法。您放棄了 PUT 的一些優點——丟失的消息現在處理起來更加復雜。


PATCH /31E772D3-0157-4B52-8243-75EEAB946E65

Content-Type: application/json

沒有任何懸念。 application/json不是補丁文檔格式——如果沒有某種帶外協議,您無法知道這種表示正在描述哪些變化。


PATCH /31E772D3-0157-4B52-8243-75EEAB946E65

Content-Type: application/vnd.example.patch+json


PATCH /31E772D3-0157-4B52-8243-75EEAB946E65

Content-Type: application/prs.example.patch+json

這是前一點的“REST”方式;您定義一個自定義媒體類型,并記錄語義,然后任何實現您的媒體類型的客戶端都可以使用它。供應商樹和虛榮樹可用。該+json位是結構化語法名稱后綴,它為無法識別基本子類型的消費者提供結構提示。


PATCH /31E772D3-0157-4B52-8243-75EEAB946E65

Content-Type: application/json-patch+json


PATCH /31E772D3-0157-4B52-8243-75EEAB946E65

Content-Type: application/merge-patch+json

也是很好的選擇,因為這兩種類型已在RFC 6902和RFC 7936中標準化;您更有可能客戶已經知道這些類型。


了解 HTTP PATCH的客戶端大概也知道如何使用 OPTIONS 方法來發現服務器準備處理的方法和補丁文檔格式。


OPTIONS /31E772D3-0157-4B52-8243-75EEAB946E65


HTTP/1.1 204 No Content

Allow: OPTIONS, GET, HEAD, PUT, PATCH

Accept-Patch: application/prs.example.patch+json, application/json-patch+json, application/merge-patch+json


查看完整回答
反對 回復 2022-11-10
  • 1 回答
  • 0 關注
  • 88 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號