API结果输出列过滤

时间:2016-04-22 08:50:23

标签: spring api rest filter

我的合作伙伴和我正在开发一个webapp,我们将Spring后端逻辑公开为Restful API。我们的类具有各种多对一/一对多关系,但并非所有前端用例都需要一个类中的所有信息。

一个例子:说[GET] /api/v1/person返回一个人员列表。该调用还支持通过pageSizepagesortColumnsortDirection参数进行排序和分页。检索person个对象时,某些前端功能只需要id和name,其他功能需要更多详细信息,最后一组功能需要完整的详细信息(包括一对多关系对象)。

似乎有两种方法可以实现这一点 - 或者进行3次返回所需@JsonView()数据的特定调用

[GET] /api/v1/person/feature1
[GET] /api/v1/person/feature2
[GET] /api/v1/person/feature3

或允许一个额外的view参数,让用户选择给定请求所需的特定视图

[GET] /api/v1/person?view=basic
[GET] /api/v1/person?view=detailed
[GET] /api/v1/person?view=full

目前我们选择了第二种方法,因为它似乎提供了更大的灵活性。它还减少了我们需要维护的REST控制器方法的数量。

所以我的问题是这个问题是否有最好的做法。传递view param似乎非常灵活,但与此同时似乎没有其他人使用这种方法,所以我们认为可能我们做错了。

只是想检查是否有一种完善的“正确”方法来过滤结果对象的列 - 单独的特定调用或带有view参数的常规API调用。

提前致谢!

0 个答案:

没有答案