5

この質問は拡張機能ですが、以前に投稿されたこの質問とはのものです。

ガレージに複数の車がある基本的な例があるので、エンドポイントは

/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番目の方法に傾倒していますが、より高度なクエリを実行したい場合、これが本当に面倒になるのではないかと心配しています.

4

2 に答える 2