使用额外数据扩展资源端点?

时间:2014-11-07 05:09:40

标签: api rest api-design

通常使用与所请求资源相关的其他数据来扩展资源端点通常是个坏主意吗?

实施例

GET /post/:id/ - 检索单个帖子

响应示例

{
 id : 1
 title : 'Hello world',
 body : 'Testing'
}

GET /post/:id/?includeMeta=1 - 使用其他元数据检索单个帖子

响应示例

{
 id : 1
 title : 'Hello world',
 body : 'Testing',
 meta : {
     url : 'http://google.com',
     customMetaKey : 'some value'
 }
}

1 个答案:

答案 0 :(得分:1)

这取决于这些额外值是否属于主要资源。在您的情况下,如果它们属于名为" Post"那么它完全可以接受。实际上,您可以使用Google首次使用的名为" Partial Responses"的方法。在这种情况下,您必须添加一个名为" fields"的特殊QueryString属性。像下面的例子。

GET /post/:id/?fields=metadata,field2,field3,association(field1,field2)

在此queryString中,您可以添加要在响应中返回的所有字段,包括关联。请查看以下文章,了解有关部分回复的更多信息:

另一方面,如果这些额外价值不属于主要资源,那么我认为它没有任何意义。如果客户想要这些值,那么它必须向拥有它的资源询问它。