休息服务应该 return 一个包含其他实体或实体本身 ID 的实体吗?
Should a rest service return an entity that contains ids to other entities or the entities themselves?
我不确定以前是否有人回答过这个问题,但我不知道如何搜索此类内容,所以我要在这里问一下。例如,如果我有一个名为 User 的实体,看起来像这样:
class User
{
int id;
string name;
int roleId;
}
和一个名为 Role
的实体
class Role
{
int id;
string name;
string[] permissions;
}
一个用户包含一个角色的id。如果我通过休息 api 请求用户,是否应该像这样 return 使用角色的 ID 编辑用户:
{
"id": 1,
"name": "user"
"roleId": 1
}
然后,如果我需要获得该角色,我应该发送另一个 api 调用来获取该特定角色。或者我应该将角色映射到用户并 return 像这样:
{
"id": 1,
"name": "user"
"role": {
"id": 1,
"permissions": [
"something here"
]
}
}
在这种情况下,我不需要发送另一个请求,但我可能不需要该角色。
取决于受众,例如内部消费,是的,id 很好,允许他们根据需要构建多个查询。
最终,如果您想针对您的受众进行定制,而不是将每个数据排列作为休息端点,请查看 GraphQL 消费者可以根据自己的需求定制响应。
我不确定以前是否有人回答过这个问题,但我不知道如何搜索此类内容,所以我要在这里问一下。例如,如果我有一个名为 User 的实体,看起来像这样:
class User
{
int id;
string name;
int roleId;
}
和一个名为 Role
的实体 class Role
{
int id;
string name;
string[] permissions;
}
一个用户包含一个角色的id。如果我通过休息 api 请求用户,是否应该像这样 return 使用角色的 ID 编辑用户:
{
"id": 1,
"name": "user"
"roleId": 1
}
然后,如果我需要获得该角色,我应该发送另一个 api 调用来获取该特定角色。或者我应该将角色映射到用户并 return 像这样:
{
"id": 1,
"name": "user"
"role": {
"id": 1,
"permissions": [
"something here"
]
}
}
在这种情况下,我不需要发送另一个请求,但我可能不需要该角色。
取决于受众,例如内部消费,是的,id 很好,允许他们根据需要构建多个查询。
最终,如果您想针对您的受众进行定制,而不是将每个数据排列作为休息端点,请查看 GraphQL 消费者可以根据自己的需求定制响应。