REST - 部分资源

时间:2015-09-29 23:29:11

标签: json rest

REST设计中常见的是允许返回部分资源。在这种情况下;我想允许用户仅指定在该资源的JSON表示中返回的资源的某些字段。

例如,假设我们有一个资源Person:

{
   "id": 12,
   "name":{
          "first":"Angie",
          "last": "Smith",
          "middle": "joy",
          "maiden": "crowly",
    },
    "address": {
          "street": "1122 Something St.",
          ..and so on...
    },
... and so on
}

让我们说,参数列表很长。并且假设我有一个API消费者,他在创建API设计之初只想要一些像id和name.first这样的字段。我认为允许这样的事情很常见:

/人?字段= ID,名字

其中字段说我只想要那些字段。

我遇到的问题是,Person资源应该返回所有带空值的字段,只返回带有值的字段,或者它只返回带有字段id和name的Person表示,并且你从字面上删除所有其他的params后端。

似乎#2更清晰,但在REST中执行此操作是否有意义,或者人们通常会返回所有其他字段(以确保我们在结构/架构方面保持表示一致/可靠)空?

3 个答案:

答案 0 :(得分:5)

如您所知,选项2更清晰,是的,在REST中执行此操作是有意义的。

添加null会使部分响应的部分目的失败,因为它会使响应主体变得比它需要的大。

您所描述的用例示例将在Google Developer Forum上展示;在Partial Response部分。

答案 1 :(得分:2)

您所谈论的是同一资源的不同表示。两种表示都是有效的,但在我看来#2更有意义,因为响应更小,如果你不想显示值,你通常也不需要属性名称。

答案 2 :(得分:0)

为了扩展先前关于部分响应的两个重要回复,您还可以考虑标头Prefer,而不是使用查询参数fields

有关详细信息,请参阅以下链接:

希望它可以帮到你, 亨利