RFC 6902定義了很多事情和清楚。但有兩個相關的東西:HTTP PATCH一個連接表?
- 你如何修補已加入到資源的表?
- 而當連接有多行?
例如,
GET /news/123
[
{"title": "Hello", "contents": "World", "categories": [1, 2, 3]}
]
凡結果來自這些數據庫表和列:
title = news.title
contents = news.contents
categories = newscategories_mapping WHERE newscategories_mapping.newsID = news.id
所以,如果我發送一個補丁:
PATCH /news/123
[
{"op": "replace", "path": "/title", "value": "New Title"}
]
這是非常簡單的。但是,當我想更新同一資源的類別時如何? IE瀏覽器。 「加入」表。
PATCH /news/123
[
{"op": "replace", "path": "/categories", "value": [4, 5]}
]
此外,通知兩兩件事:
- 現有值,沒有包含。
- 量小於原始(2值,而不是3)
假設貼片之前的原始值是newscategories_mapping.id
20,21和22
問題1:如若新的/categories
值4
替換id = 20,值5
替換id = 21?或者應該刪除id = 20,id = 21和id = 22,並且新值得到新ID id = 23和id = 24?
問題2:應刪除id = 22,即使沒有明確要求?
問題3:還是應該完全沒有完成上述任務,而是我應該有一個單獨的端點來修補每個類別?所以,例如。 PATCH /news/123/categories/20
和PATCH /news/123/categories/21
?
好吧,所以基本上它沒關係的API **你如何產生的價值,例如。 ''[1,2,3]'',這大部分是我所掌握的。因此,您只需向端點添加單獨的處理,以檢查數據庫中要更新的內容。所以如果使用''「path」:「/ categories」',我需要添加一些映射,使其更新'newscategories_mapping'而不是'news''。基本上是部分PUT,沒有什麼奇怪的。 –