RESTful设计:解决关系

时间:2013-08-24 17:27:22

标签: api rest

我的问题基于这篇文章: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

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

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

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

1 个答案:

答案 0 :(得分: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"
        }
    ]
}