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 我的组。