【发布时间】:2012-01-07 00:06:28
【问题描述】:
我一直在创建一个 RESTful 应用程序,但尚未决定如何处理不返回资源的所有实体或返回多个资源的请求(GET /resource/all 请求)。请允许我花一点时间来设置情况(我会尽量概括这一点,以便它可以适用于除我之外的其他人):
假设我正在创建一个产品 API。为简单起见,假设它返回 JSON(在发送正确的接受标头之后)。可以通过/product/[id] 访问产品。产品有评论,可通过/products/[id]/review/[id] 访问。
我的第一个问题在于这个子资源模式。由于您在获取产品时可能并不总是想要评论,因此可以通过另一个 URI 访问它们。根据我的阅读,我应该包含请求的 URI,它将在产品请求的响应中返回产品的所有评论 URI。我应该怎么做才能遵守 RESTful 标准?它应该是像Reviews-URI: /product/123/review/all 这样的标头,还是应该像这样在响应正文中包含 URL:
{ 'name': 'Shamwow',
'price': '$14.99',
'reviews': '/product/123/review/all'
}
我的第二个问题是关于 /product/[id]/review/all 请求应该如何运行。我听说我应该只发送所有评论的 URL 并让用户获取每个评论,而不是将所有评论打包到一个请求中。我应该如何根据 RESTful 标准指示这组评论 URI?我应该使用标头还是在响应正文中列出 URI,如下所示:
{ 'reviews': [ '/product/123/review/1',
'/product/123/review/2',
'/product/123/review/3'
]
}
【问题讨论】: