RESTful API 关于让所有 A 与 B 相关联的设计建议
RESTful API design advice on getting all A associated with B
我正在尝试设计一个 RESTful API 作为副项目。
我也在使用 MongoDB 作为数据库
(我是 NoSQL 设计的新手,所以我需要帮助,如果我对文档应该如何设计有误解)。
我有如下示例实体:
Event {
id: string
name: string
date: date
location: location
subgroups: group[]
}
Group {
id: string
owners: user[]
members: user[]
parentEvent: event
posts: post[]
}
User {
id: string
Name: string
attendingGroups: group[]
owningGroups: group[]
}
post {
id: string
parentgroup: Group
}
location {
id: string
city: string
}
对于上面的例子,
我是否应该有一个指定的 get 调用来让所有组都与用户相关联?
或者我应该获取用户并从检索到的用户中获取关联的组?
看你怎么设计。您可以将资源嵌入到其他资源中,以避免 N+1 select 问题,没有人反对这样做。
Hal+json 格式是您应该嵌入资源的格式。
在 REST 中,您甚至可以使用 ?_embed=groups 参数来嵌入或不嵌入。
嵌入或不嵌入取决于您的应用程序需求,而不是嵌入方式=您应该设计一个像/groups?user=eralpb 这样的过滤器来获取组。或者子资源也可以像 /users/eralpb/groups 一样工作 return 我的组。
我正在尝试设计一个 RESTful API 作为副项目。
我也在使用 MongoDB 作为数据库
(我是 NoSQL 设计的新手,所以我需要帮助,如果我对文档应该如何设计有误解)。
我有如下示例实体:
Event {
id: string
name: string
date: date
location: location
subgroups: group[]
}
Group {
id: string
owners: user[]
members: user[]
parentEvent: event
posts: post[]
}
User {
id: string
Name: string
attendingGroups: group[]
owningGroups: group[]
}
post {
id: string
parentgroup: Group
}
location {
id: string
city: string
}
对于上面的例子,
我是否应该有一个指定的 get 调用来让所有组都与用户相关联?
或者我应该获取用户并从检索到的用户中获取关联的组?
看你怎么设计。您可以将资源嵌入到其他资源中,以避免 N+1 select 问题,没有人反对这样做。
Hal+json 格式是您应该嵌入资源的格式。
在 REST 中,您甚至可以使用 ?_embed=groups 参数来嵌入或不嵌入。
嵌入或不嵌入取决于您的应用程序需求,而不是嵌入方式=您应该设计一个像/groups?user=eralpb 这样的过滤器来获取组。或者子资源也可以像 /users/eralpb/groups 一样工作 return 我的组。