マスターの ID に基づいて詳細レコードの取得を実装する最良の方法を決定しようとしています。
明らかに、マスターと詳細の両方に API コントローラーを設定します。
私が検討した解決策:
- API コンシューマに OData を使用して、マスター ID でフィルタリングされたすべての詳細を取得させます。私はこのソリューションに問題はありませんが、それを API コンシューマーに置くのは少し気分が悪く、API によって内部的に処理されるべきものだと感じています。
- Get/Put/Post/Delete メソッドのみを使用するという規則に反して、詳細コントローラーで「GetMastersDetails」のアクションを作成し、ルーティングを介してアクセスできるようにします。これは確かに機能しますが、これは Web API の要点から (ある程度) 離れているように感じます。
- 「MastersDetailsController」という名前の 3 番目のコントローラーを作成します。このコントローラーには、さまざまな戻り値の型を持つマスター ID に基づく Get があります。
- 詳細 ID のリストを返します。これを使用して、詳細コントローラーで Get を呼び出し、実際の詳細を取得します。
- 実際の詳細オブジェクトのリストを返します。それについて私が気に入らないのは、コントローラーが基づいているものとは異なる型を返すことです。