[英]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.