我正在构建一个事件管理系统。架构如下所述。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 的大部分内容都表明这是“正确”的做法,但效率非常低。例如,如果我想生成参与事件的用户和团队的报告,它需要许多请求。这类似于运行多个选择查询,而不是针对数据库运行单个连接查询。所以我的问题是,我应该扩展关系并将相关资源嵌入资源请求中吗?这也带来了一个问题,b/c 上面的请求将返回大量数据。答案可能是坚持使用关系链接并设置适当的缓存。无论如何,我想听听你的意见。
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