在检索多个项和单个项时,RESTful服务是否应该返回不同的数据

在检索多个项和单个项时,RESTful服务是否应该返回不同的数据,rest,Rest,对于RESTAPI,是否期望为某个资源返回的数据总是完全相同的表示 例如,将以下内容作为资源列表是否违反规范或常规: GET /api/users { userId: 1, username: 'User1' }, { userId: 2, username: 'User2' } 但在调用单个资源时,请返回以下内容: GET /api/users/1 { userId: 1, username: 'User1', email: 'us

对于RESTAPI,是否期望为某个资源返回的数据总是完全相同的表示

例如,将以下内容作为资源列表是否违反规范或常规:

GET /api/users

{
    userId: 1,
    username: 'User1'
},
{
    userId: 2,
    username: 'User2'
}
但在调用单个资源时,请返回以下内容:

GET /api/users/1

{
    userId: 1,
    username: 'User1',
    email: 'user1@example.com',
    firstName: 'User',
    lastName: 'One'
}
我习惯于只通过网络发送我需要的数据,所以当一个资源不被使用时,把它的所有信息都发送回响应中,我觉得很奇怪


我关心的一个例子是,当使用资源ID和名称列表填充下拉列表时,可能会有大量不必要的数据通过发送。

在列出资源与加载单个资源时,使用缩写数据结构是完全可以的-事实上,我认为这是预期的行为,我见过/使用过的大多数RESTful API都使用这种形式。毕竟,如果要在列出资源时发送所有数据,那么除了有人猜测资源ID并为其检索数据之外,为什么还需要一个单独的资源加载器呢


唯一的问题是列表应该在多大程度上简化数据,这可以归结为您服务的典型用例-如果期望它只在深入挖掘数据之前填充用户名列表,ID和用户名已经足够了。

在列出资源和加载单个资源时,使用一个简化的数据结构是完全可以的——事实上,我认为这是预期的行为,我见过/使用过的大多数RESTful API都使用这种形式。毕竟,如果要在列出资源时发送所有数据,那么除了有人猜测资源ID并为其检索数据之外,为什么还需要一个单独的资源加载器呢


唯一的问题是列表应该在多大程度上简化数据,这可以归结为您服务的典型用例-如果在深入挖掘数据之前只需要填充用户名列表,那么ID和用户名就足够了。

所有数据都会被索引。这就是为什么你会看到这种行为我认为这可能会帮助你所有的数据都被索引。这就是你看到这个的原因我想这可能会对你有所帮助