REST:提供相同资源的详细和概述响应

时间:2015-06-04 19:19:39

标签: rest

我有一个资源说rest/users,其中包含具有许多属性的用户。现在我想提供三件事。

  • 包含每个用户名和ID(以节省流量)的概述
  • 详细视图,其中包含用户的每个属性(如果客户需要所有数据,则保存请求)
  • 单个用户(通过rest/users/{id}

我有两个想法来解决这个问题。

  1. 使用查询参数,例如视图,可以是详细信息或概述
  2. 访问rest/users时返回概述,访问rest/users/all
  3. 时返回详细信息视图

    哪一个是RESTful解决方案?还是有更好的?我是否应该首先避免提供两个回复?

    编辑:这不是architectural design for REST API with views across resources的重复,因为需要针对同一资源的不同答案,而不是不同资源的组合。

    Lutz Horn的回答为我解决了问题。

1 个答案:

答案 0 :(得分:3)

  

哪一个是RESTful解决方案?

两者都不是RESTful。请求时

GET /rest/users

您可以使用Content Negotiation来区分简短列表和详细用户列表。提出

的请求
GET /rest/users
Accept: application/vnd.example.com.users.short+json

将返回短用户信息列表的JSON表示,

的请求
GET /rest/users
Accept: application/vnd.example.com.users.detailed+json

将返回用户列表的JSON表示,其中包含所有详细信息

请注意,我在Accept标题中编写了MIME类型。重要的部分是vnd,这是根据现有MIME类型定义自己的MIME类型的标准方法(在本例中为application/json)。

使用查询参数或不同的网址进行区分,因为您在不同的表示中请求相同的资源(用户列表) (简短而详细)。两者的网址相同,Accept标头不同。