2014-06-26 43 views
0

我一直在研究API和分页是必需的。每个请求中只会返回25个元素。我四处寻找标准,我似乎看到了两件不同的事情。API分页标准

  1. 链路标题

实施例:

Link: <https://api.github.com/user/repos?page=3&per_page=100>; rel="next", 
    <https://api.github.com/user/repos?page=50&per_page=100>; rel="last" 

  • 在JSON响应
  • 例子:

    "paging": { 
        "previous": "http://api.example.com/foo?since=TIMESTAMP" 
        "next": "http://api.example.com/foo?since=TIMESTAMP2" 
    } 
    

    问:

    我应该做两者兼而有之?这就是说;是关键的“分页”正确的关键?或“链接”或“分页”

    +0

    您是为您或其他人构建API吗?如果你自己,那么标准完全取决于你。 –

    +0

    将是一个公众可访问的API http://mtgapi.com – michaelcurry

    +1

    这并不回答这个问题。是你的API还是你正在为客户构建?如果你发明它并且人们可以访问它们,那么它们就是你的仁慈。无论你想要什么,你都可以打电话给“页面”,强迫他们进入他们会鄙视你的疯狂建筑。但是,如果是为客户服务,他们可能会首先坚持这个愿望,如果您有疑问,应该询问。或者,你可以假设整个世界都期望page = 1和per_page = 30是一个完美合适的结构,不会让人困惑。添加你自己的方法非常好。 method = since&timestamp = xxx&per_page = 30&page = 2 –

    回答

    0

    我想说这取决于您返回的数据结构(并可能在未来返回)。

    如果你从来没有嵌套对象需要自己的链接,那么使用链接标题是(温和地)更好,因为它更正确。嵌套对象的问题是您无法嵌套链接标头。

    考虑以下收藏单位:

    { 
        "links": { 
         "collection": "/cards?offset=0&limit=25" 
        }, 
        "data": [ 
         { 
          "cardName": "Island of Wak-Wak", 
          "type": "Land", 
          "links": { 
           "set": "/cards?set=Arabian Knights" 
          } 
         }, 
         { 
          "cardName": "Mana Drain", 
          "type": "Interrupt", 
          "links": { 
           "set": "/cards?set=Legends" 
          } 
         } 
        ] 
    } 
    

    有包含在头牌环节没有什么好办法。

    +0

    完成所有我收到的反馈:http://api.mtgapi.com/v2/cards – michaelcurry