zhix
V2EX  ›  API

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

  •  
  •   zhix · Sep 30, 2017 · 3776 views
    This topic created in 3171 days ago, the information mentioned may be changed or developed.

    举例:显示用户的 API /users

    返回列表数量

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

    不返回列表数量

    {
        "users": [ ... ]
    }
    

    哪一种比较好?

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