有兩個物體,User和Order。該User物體擁有Set<Order>的訂單,這是一個雙向映射。
現在我有兩個控制器,一個控制器被呼叫OrderController,它有一些端點來檢索所有訂單,等等。第二個控制器被呼叫UserController,它有一些與用戶相關的端點,但它也有端點,例如/users/{username}/orders和/users/{username}/orders/{orderId}。
問題是我應該在哪里添加端點來保存訂單?它應該是一個POSTin OrderControllerie/orders還是應該UserController作為/users/{username}/orders端點?訂單由用戶創建,OrderController僅用于檢索所有訂單,而不僅僅是針對特定用戶。
你有什么關于它應該如何設計的提示嗎?
uj5u.com熱心網友回復:
Zalando API Guideline對此有一些看法,他們建議我們應該限制資源型別的數量,原因如下:
為了保持維護和服務演化的可管理性,我們應該遵循“功能細分”和“關注點分離”的設計原則,不要在同一個 API 定義中混合不同的業務功能。實際上,這意味著通過 API 公開的資源型別的數量應該受到限制。在此背景關系中,資源型別被定義為一組高度相關的資源,例如集合、其成員和任何直接子資源。
適用于您的情況,基本上他們建議只有以下資源型別:
- /用戶
- /命令
而沒有必要有/users/{username}/orders/作為/orders已經達到相同的目的。如果您想獲得用戶的訂單,只需使用/orders?user=foobar
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/400903.html
