rest服务应该将包含ID的实体返回给其他实体还是实体本身?

rest服务应该将包含ID的实体返回给其他实体还是实体本身?,rest,api-design,Rest,Api Design,我不确定之前是否有人回答过,但我不知道如何搜索这种类型的东西,所以我想在这里问一下。例如,如果我有一个名为User的实体,其外观如下: class User { int id; string name; int roleId; } { "id": 1, "name": "user" "role": { "id": 1,

我不确定之前是否有人回答过,但我不知道如何搜索这种类型的东西,所以我想在这里问一下。例如,如果我有一个名为User的实体,其外观如下:

 class User
 {
     int id; 
     string name;
     int roleId;
 }
{
    "id": 1,
    "name": "user"
    "role": {
       "id": 1,
       "permissions": [
          "something here"  
       ]
    }
}
和一个名为Role的实体

 class Role
 {
     int id; 
     string name;
     string[] permissions;
 }
用户包含角色的id。如果我通过rest api请求一个用户,是否应返回该用户,并提供如下角色id:

{
    "id": 1,
    "name": "user"
    "roleId": 1
}
然后,如果我需要获取该角色,我应该发送另一个api调用来获取该特定角色。或者我应该将角色映射到用户并按如下方式返回它:

 class User
 {
     int id; 
     string name;
     int roleId;
 }
{
    "id": 1,
    "name": "user"
    "role": {
       "id": 1,
       "permissions": [
          "something here"  
       ]
    }
}

在这种情况下,我不需要发送另一个请求,但我可能不需要该角色。

取决于受众,如内部消费,是ID很好,允许他们根据需要建立多个查询

最终,如果您想针对您的受众进行定制,而不是提供每一种数据排列作为rest端点,那么请研究消费者可以在哪里根据他们的需求定制响应