V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhix
V2EX  ›  API

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

  •  
  •   zhix · 2017-09-30 10:26:13 +08:00 · 2985 次点击
    这是一个创建于 2372 天前的主题,其中的信息可能已经有所发展或是发生改变。

    举例:显示用户的 API /users

    返回列表数量

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

    不返回列表数量

    {
        "users": [ ... ]
    }
    

    哪一种比较好?

    13 条回复    2017-09-30 15:51:28 +08:00
    crysislinux
        1
    crysislinux  
       2017-09-30 10:30:14 +08:00 via Android
    如果支持 filter 的话,统一返回个 filteredTotal 和 Total 还是挺有用的
    raofeng
        2
    raofeng  
       2017-09-30 10:48:11 +08:00   ❤️ 1
    我们用 Ruby On Rails 是这样搞的,在需要分页的地方,就需要同时返回总条数,总页数,每页显示条数。
    在不需要显示分页的地方,就直接返回 users 好了,因为一般都是直接读取 users 的 size,就获得了 count 了
    oh
        3
    oh  
       2017-09-30 10:59:44 +08:00 via iPhone
    这个 count 一般是指符合条件的 user 总数,而不是这个 user 数组的长度。比如做分页的时候要知道分几页。
    xgfan
        4
    xgfan  
       2017-09-30 11:00:28 +08:00
    我觉得没必要吧,前端拿到数据开始操作的时候,已经序列化好了。取长度就好了
    你第二种也是多余,直接返回列表就好了。
    gzlock
        5
    gzlock  
       2017-09-30 11:02:40 +08:00 via Android
    看业务需求的问题在 v2 也问不出什么结果
    要用就放,不要用就不放,多大点事
    hnbcinfo
        6
    hnbcinfo  
       2017-09-30 11:07:28 +08:00
    分页的话加一个总长度字段有必要,但返回数据长度不用单独列出来吧
    nannanziyu
        7
    nannanziyu  
       2017-09-30 11:10:06 +08:00
    @xgfan 这叫反序列化
    lecher
        8
    lecher  
       2017-09-30 11:33:33 +08:00 via Android
    取决于前端要不要用 total 处理分页渲染,是不是允许跳转指定分页。
    如果瀑布流,用户不需要关心总页数,渲染分页列表之类的,就不需要返回 total
    xgfan
        9
    xgfan  
       2017-09-30 11:44:50 +08:00
    @nannanziyu 尴尬了。
    cnxobo
        10
    cnxobo  
       2017-09-30 11:50:25 +08:00   ❤️ 2
    可以把分页相关信息写到 HTTP Header 里.
    loveCoding
        11
    loveCoding  
       2017-09-30 12:16:52 +08:00
    感觉没那个必要
    code
    msg
    result
    zhix
        12
    zhix  
    OP
       2017-09-30 13:12:38 +08:00
    @cnxobo 破案了
    ytmsdy
        13
    ytmsdy  
       2017-09-30 15:51:28 +08:00
    取决于需不需要做分页!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2691 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:09 · PVG 23:09 · LAX 08:09 · JFK 11:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.