イベント管理システムを構築しています。スキーマを以下に説明します。API はこれらの関係を理解し、リクエスト結果で関連リソースへのリンクを返します。例えば、
GET /Events/1
"links": {
"Venue": "/Venues/1",
"Tickets": "/Tickets?event_id=1",
"Teams": "/Teams?event_id=1",
"Registrations": "/Registrations?event_id=1"
}
REST と HATEOAS について読んだことのほとんどは、これが「正しい」方法であると示唆していますが、非常に非効率的です。たとえば、イベントに参加しているユーザーとチームのレポートを作成したい場合、多くのリクエストが必要です。これは、DB に対して単一の結合クエリを実行する代わりに、複数の選択クエリを実行することに似ています。私の質問は、関係を拡張し、関連するリソースをリソース リクエスト内に埋め込む必要があるかということです。これはまた、上記のリクエストが大量のデータを返すという問題を引き起こします。答えは、関係リンクに固執し、適切なキャッシュをセットアップすることかもしれません. 何はともあれ、ご意見をいただきたいです。
Schema
events
hasMany registrations
hasMany tickets
hasMany teams
team
belongsTo event
ticket
belongsTo event
hasMany registrations
user
hasMany registrations
registrations
belongsTo event
belongsTo ticket
belongsTo user
belongsTo team