我一直在创建一个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,让用户GET每一条评论,而不是将他们打包到一个请求中。根据RESTful标准,我应该如何指示这个评论URI数组呢?我应该使用头部还是像下面这样在响应体中列出URI:
{ 'reviews': [ '/product/123/review/1',
'/product/123/review/2',
'/product/123/review/3'
]
}
<link>
和href
对我来说感觉很正确),所以我想我会转换为XML,即使它可能会更冗长。您建议我如何决定是否将资源链接或嵌入响应中?它应该是请求中可以指定的内容吗? - Bailey Parker