[英]REST API Design: Should my response contain the input args for reference
[英]REST Route/Input Design
我有一個Restaurant
許多Menu
,一個Menu
許多Category
,一個Category
的許多Item
。 我一直在努力尋找為這些模型布置路線的最佳方法。 這是我看到的選項:
我可以展平路線,僅需要父模型的ID。
GET /menus?restaurant_id=X
POST /menus?restaurant_id=X&name=foo&description=bar
我可以將所有路線嵌套在給定的父模型中。
GET /restaurant/:restaurant_id/menus
POST /restaurant/:restaurant_id/menus?name=foo&description=bar
GET /restaurant/:restaurant_id/menus/:menu_id/categories/:category_id/items
有一個好的標准可供選擇嗎?
我將使用您的最后一個示例-為了盡量減少可讀性和緩存/代理問題,我嘗試將URL參數保持在最低限度。
我會這樣設計:
POST /menus?restaurant_id=123&name=foo&description=bar
GET /menus?id=890 // specific menu
GET /menus?/restaurant_id=123 // many menus
POST /items?category_id=594&name=milkshake&description=vanilla
POST /<model_of_interest>?<parent_of_model_of_interest>&<other>&<parameters>
GET /<model_of_interest>?<model_of_interest_id>
如您所見,這將適用於您最頂部和最底部的型號,而無需任何其他操作。 然后驗證請求並使用您的模型強制執行訪問,鑒於要使用的“僅一個父級”方案,該模型應該很容易抽象(即,通過傳遞&category_id=345
創建項目路線,您可以輕松構造對象的其余部分並知道可以確定345
只能屬於menu_id=123
,甚至只能屬於restaurant_id=...
)。
這具有以下優點:
id=338
) category_id=123
所有項目)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.