2012-11-16 61 views
3

我想確定基於主控ID實現詳細記錄檢索的最佳方法。組織主控細節控制器ASP.Net Web API

顯然你會爲主和細節都設置API控制器。

解決方案,我認爲:

  • 有無API消費者使用的OData獲得由主ID過濾的所有細節。雖然我對這個解決方案沒有任何問題,但我有點不好意思把它放到API消費者身上,覺得這是API應該在內部處理的東西
  • 違背只有Get/Put/Post/Delete方法並在細節控制器上創建一個「GetMastersDetails」動作,並通過路由訪問它。雖然這肯定會起作用,但我覺得這遠離了Web API的全部(在某種程度上)。
  • 創建一個名爲「MastersDetailsController」第3控制器,這將有一個獲取基於主機ID與不同的可能的返回類型:
    • 這將返回其將被用來調用的一個獲取詳細ID列表詳細信息控制器以獲取這些實際的詳細信息
    • 這將返回實際詳細信息對象的列表。我不喜歡的是有一個控制器返回一個不同於它基於的類型。

回答

0

選項2沒問題。根據您的方案以及您希望允許用戶獲得的選項,選項1會帶來更多風險。

將自定義方法添加到ApiController並不是真的「反對約定」。無論你喜歡,你都可以做到這一點。如果你這樣做了,並且使用了錯誤的HTTP方法(例如,在刪除自定義方法中的某個GET時),它將僅僅是「違反約定」。

0

我會去#1或#2。

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

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