簡體   English   中英

組織Master-Detail控制器ASP.Net Web API

[英]Organizing Master-Detail Controllers ASP.Net Web API

我正在嘗試根據主人的ID確定實現詳細記錄檢索的最佳方法。

顯然,您將為master和detail設置API控制器。

我考慮過的解決方案:

  • 讓API使用者使用OData來獲取由主ID過濾的所有詳細信息。 雖然我對這個解決方案沒有任何問題,但我覺得把它放到API使用者身上並感覺它應該由API內部處理
  • 違反只有Get / Put / Post / Delete方法的慣例,並在詳細控制器上創建“GetMastersDetails”操作,並通過路由訪問它。 雖然這肯定會起作用,但我覺得這遠離了Web API的整個過程(在某種程度上)。
  • 創建一個名為“MastersDetailsController”的第三個控制器,它將具有基於具有不同可能返回類型的主ID的Get:
    • 這將返回一個詳細ID列表,然后將其用於調用詳細信息控制器上的Get以獲取這些實際詳細信息
    • 這將返回實際細節對象的列表。 我不喜歡的是控制器返回的類型不同於它所基於的類型。

我會選擇#1或#2。

對於#1,OData支持不僅可以實現您描述的場景,還可以提供將來可能需要的許多附加功能。

對於#2,我認為它不會脫離Web API的角度。 也許有點來自真正的RESTful服務,但它易於實現且易於理解。

選項2沒問題。 選項1會根據您的方案以及您希望用戶獲得的內容開辟更多風險。

向ApiController添加自定義方法並不是“違反慣例”。 你可以隨心所欲地做到這一點。 如果您這樣做並且使用了錯誤的HTTP方法(即在您的自定義方法中刪除某些內容時為GET),它將只是“違反慣例”。

暫無
暫無

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

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