我有一个资源说rest/users
,其中包含具有许多属性的用户。现在我想提供三件事。
rest/users/{id}
)我有两个想法来解决这个问题。
rest/users
时返回概述,访问rest/users/all
哪一个是RESTful解决方案?还是有更好的?我是否应该首先避免提供两个回复?
编辑:这不是architectural design for REST API with views across resources的重复,因为需要针对同一资源的不同答案,而不是不同资源的组合。
Lutz Horn的回答为我解决了问题。
答案 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
标头不同。