この質問は拡張機能ですが、以前に投稿されたこの質問とは別のものです。
ガレージに複数の車がある基本的な例があるので、エンドポイントは
/garages
/garages/{id}
/garages/{id}/cars
/garages/{id}/cars/{id}
/cars
/cars/{id}
複数のガレージからすべての車を取得できます/cars?garage[id]=1,2,3
これはクールです。しかし、私が今疑問に思っているのは、API の内部です。
これを行うには、次の 2 つの方法が考えられます。
/cars エンドポイントでの直接フィルタリング
これは、車を取得するためのクエリで、いくつかの結合を行い、いくつかの場所を追加することを意味します。
このアプローチの利点は、クエリの量が最小限になることです。
このアプローチの短所は、ガレージ リソースを 2 つの場所で維持することになることです。ガレージが新しいプロパティを取得するたびに、cars エンドポイントでもこれをサポートする必要があります。
/cars エンドポイントから /garages エンドポイントを呼び出す
これは、一致するガレージからすべての車の ID を返す /garages を使用して、/cars エンドポイント内から /garages エンドポイントを呼び出すことを意味します。次に、/cars エンドポイント内から車を取得します。
この方法の利点は、リソースが自己完結型であることです。
このアプローチの短所は、データベースへの複数の呼び出しが発生することです。また、認証の詳細を渡すのが面倒になる可能性があります (Oauth 2.0 を想定しましょう)。
では、これを行う最も適切な方法は何ですか? 私は2番目の方法に傾倒していますが、より高度なクエリを実行したい場合、これが本当に面倒になるのではないかと心配しています.