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中执行此操作是否有意义,或者人们通常会返回所有其他字段(以确保我们在结构/架构方面保持表示一致/可靠)空?
答案 0 :(得分:5)
如您所知,选项2更清晰,是的,在REST中执行此操作是有意义的。
添加null会使部分响应的部分目的失败,因为它会使响应主体变得比它需要的大。
您所描述的用例示例将在Google Developer Forum上展示;在Partial Response部分。
答案 1 :(得分:2)
您所谈论的是同一资源的不同表示。两种表示都是有效的,但在我看来#2更有意义,因为响应更小,如果你不想显示值,你通常也不需要属性名称。
答案 2 :(得分:0)
为了扩展先前关于部分响应的两个重要回复,您还可以考虑标头Prefer
,而不是使用查询参数fields
。
有关详细信息,请参阅以下链接:
希望它可以帮到你, 亨利