设计 RESTful API 时需要一个键来注明返回的列表的长度吗

2017-09-30 10:26:13 +08:00
 zhix

举例:显示用户的 API /users

返回列表数量

{
    "user_count": 42,
    "users": [ ... ]
}

不返回列表数量

{
    "users": [ ... ]
}

哪一种比较好?

3010 次点击
所在节点    API
13 条回复
crysislinux
2017-09-30 10:30:14 +08:00
如果支持 filter 的话,统一返回个 filteredTotal 和 Total 还是挺有用的
raofeng
2017-09-30 10:48:11 +08:00
我们用 Ruby On Rails 是这样搞的,在需要分页的地方,就需要同时返回总条数,总页数,每页显示条数。
在不需要显示分页的地方,就直接返回 users 好了,因为一般都是直接读取 users 的 size,就获得了 count 了
oh
2017-09-30 10:59:44 +08:00
这个 count 一般是指符合条件的 user 总数,而不是这个 user 数组的长度。比如做分页的时候要知道分几页。
xgfan
2017-09-30 11:00:28 +08:00
我觉得没必要吧,前端拿到数据开始操作的时候,已经序列化好了。取长度就好了
你第二种也是多余,直接返回列表就好了。
gzlock
2017-09-30 11:02:40 +08:00
看业务需求的问题在 v2 也问不出什么结果
要用就放,不要用就不放,多大点事
hnbcinfo
2017-09-30 11:07:28 +08:00
分页的话加一个总长度字段有必要,但返回数据长度不用单独列出来吧
nannanziyu
2017-09-30 11:10:06 +08:00
@xgfan 这叫反序列化
lecher
2017-09-30 11:33:33 +08:00
取决于前端要不要用 total 处理分页渲染,是不是允许跳转指定分页。
如果瀑布流,用户不需要关心总页数,渲染分页列表之类的,就不需要返回 total
xgfan
2017-09-30 11:44:50 +08:00
@nannanziyu 尴尬了。
cnxobo
2017-09-30 11:50:25 +08:00
可以把分页相关信息写到 HTTP Header 里.
loveCoding
2017-09-30 12:16:52 +08:00
感觉没那个必要
code
msg
result
zhix
2017-09-30 13:12:38 +08:00
@cnxobo 破案了
ytmsdy
2017-09-30 15:51:28 +08:00
取决于需不需要做分页!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/394791

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX