1

我的问题基于这篇文章:should-restful-apis-include-relationships

假设我有以下资源:用户和角色

单个用户可以通过api/users/{userId}获取,单个角色可以通过api/roles/{roleId} 获取

单个用户的响应数据如下所示:

Id: 1
Firstname: Alice
Lastname: Henderson
Email: alice@henderson.com
Roles: api/users/1/roles

要获取此用户的角色,应用程序需要调用返回的 url api/users/1/roles

对于显示 1 个用户,这种方法似乎没问题。但是,如果我想显示具有相应角色的所有用户,则应用程序需要 1 次调用api/users和 x 次调用api/users/x/roles

如何改进这种设计以检索多个用户并解决他们的角色关系?

4

1 回答 1

1

您可以设计您的 API 以接受一个或多个查询参数,这些参数指定您想要的详细程度。例如:

GET /api/users/1?expand=role(self, id, name)

{
    "id": 1
    "firstName": "Alice"
    "lastName": "Henderson"
    "email": "alice@henderson.com"
    "roles": [
        {
            "self": "api/roles/4"
            "id": 4
            "name": "Administrator"
        },
        {
            "self": "api/roles/7"
            "id": 7
            "name": "Uberuser"
        }
    ]
}
于 2013-08-24T18:25:02.330 回答