使用REST API,是否期望为特定资源返回的数据始终表示完全相同?
例如,对于资源列表具有以下内容是违反规范或惯例:
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和名称列表填充下拉列表时,可能会发送大量不必要的数据。
答案 0 :(得分:2)
在列出资源与加载单个资源时,有一个缩写的数据结构是完全可以的 - 事实上,我认为这是预期的行为,我见过/使用的大多数RESTful API都使用这种形式。毕竟,如果你在列出资源时发送所有数据,为什么你甚至需要一个独立的资源加载器,除了有人猜测资源ID并为它们检索数据?
唯一的问题是列表应该将数据缩减多少,并且归结为服务的典型用例 - 如果只是在深入挖掘数据之前填充用户名列表,则ID和用户名更多够了。