[英]Handling IDs in RESTful CRUD APIs
我正在設計一個Create / Read / Update / Delete公共Web API端點,在JSON上使用基於HTTP的RESTful模式和JSON負載,並且想知道一個設計問題必須非常普遍,但是我卻很難找到指導。
讓我們僅關注API的“讀取”和“更新”部分。 當涉及到處理ID時,我對當前的“適當的” REST最佳實踐感到有些困惑。 這就是我的意思:
通過HTTP GET“讀取”員工將返回一個或多個“小部件” JSON對象(例如,我有一種方法來檢索滿足特定條件的所有小部件)。 每個窗口小部件對象都有一個ID字段,它是一個GUID。
我看到“更新小部件”端點的幾個設計選項:
我可以在這里看到各種折衷。 選項6對我來說似乎特別優雅,但對“ RESTful”而言卻不是特別好,對於API用戶來說可能是一個陌生的模式。 我見過的大多數API設計指南文檔似乎都建議使用“ PUT到/ api / widgets / {widget-id}”方法,但對上面#1/2/3/4的區別卻保持沉默。
那么“ REST完全正確” /最佳實踐方法是什么? (對於使用我的公共API終結點的開發人員來說,這是最熟悉且最不會混淆的事情)。 還有我在這里沒有想到的其他設計選項(或設計注意事項)嗎?
如果絕對必須提供ID,則可以將其公開。 另一種方法是,您可以在實體中具有唯一字段。 在不傳遞ID的情況下,您也可以創建一個包含唯一字段的DTO。 在您的情況下,{widget-id}是唯一的,並且該ID始終是自動生成的int的ID。 使用POST,這是您使用公共API的最佳方法。
如果需要對窗口小部件進行多個操作,請使用“窗口小部件”(示例:site.com/widget)創建4個不同的端點,這些端點定義了get,post,put和delete作為不同的方法。 這意味着單個API會根據調用它的不同方法而有不同的功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.