簡體   English   中英

寧靜的設計理念和最佳實踐

[英]Design philosophy and best practies of a restful api

我有幸選擇重新設計我們的主要項目public api。 什么開始作為一個目標,使一個寧靜的api,[在許多額外添加功能之后]最終作為rest / json-rpc不匹配。

所以,是時候重新思考和重新設計了。 但是我需要一些關於如何解決一些更復雜的操作的想法。

基本的CURD操作已經實現並且工作正常。

每個資源都由分層slug訪問:

GET /project/fubar/fishes

還添加了區域設置和輸出格式:

GET /project/fubar/fishes.en-us.json

好的,現在到了棘手的部分:

項目中的基本資源與具有標題和子節點的文件夾具有相似性。 “文件夾”可以包含子文件夾和項目。

將新文件夾或項目添加到文件夾的最佳做法是什么?

需要PUT / PATCH來更新有關文件夾的信息,而不是將資源鏈接到它? 需要POST才能創建新文件夾。

POST /project/fubar/fishes

要添加更多內容,最佳做法是區分文件夾到文件夾和項目到文件夾鏈接操作。 請記住,鏈接可以並且將具有另一個名稱,然后是目標。 類似於POSIX系統中的符號鏈接。

我的想法是(對現有資源):

POST /project/fubar/fishes
{
   link: /project/fubar/dogs
   title: DOGS!
   type: folder
}

反過來怎么樣; 取消鏈接?

DELETE /project/fubar/fishes/dogs

但這是一個好的設計還是會在以后回復給我?

使用內容協商

不建議使用此:

GET /project/fubar/fishes.en-us.json

在REST術語中,這是資源不同的資源

GET /project/fubar/fishes

但據我了解你的問題,兩者都是相同的資源,只在不同的表示中。

要在特定表示中獲取資源,請使用內容協商

GET /project/fubar/fishers
Accept: application/json
Accept-Language: en-us

這些物品在哪里?

我沒有在您的網址中看到任何項目,只看到您稱為“文件夾”的內容。 在REST術語中,這些稱為集合資源。 您可以通過POST將項目添加到Collection Resource。 你刪除一個項目DELETE它。 您可以通過將更改的部分POST到其中來更改項目的各個部分。 您可以通過PUT更新完整項目。

我建議識別集合資源和系統中的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM