代码之家  ›  专栏  ›  技术社区  ›  Koen Bok

RESTful设计:分页集合

  •  14
  • Koen Bok  · 技术社区  · 17 年前

    我正在设计一个REST api,它需要从服务器端执行分页(PERX)。

    浏览任何资源集合的正确方式是什么:

    备选方案1:

    GET /resource/page/<pagenr>
    GET /resource/tags/<tag1>,<tag2>/page/<pagenr>
    GET /resource/search/<query>/page/<pagenr>
    

    选项2:

    GET /resource/?page=<pagenr>
    GET /resource/tags/<tag1>,<tag2>?page=<pagenr>
    GET /resource/search/<query>?page=<pagenr>
    

    如果1,我应该如何处理GET/resource?重定向到/resource/page/0,回复时出现一些错误,还是回复时与/resource/page/0完全相同而不重定向?

    3 回复  |  直到 17 年前
        1
  •  13
  •   Community Mohan Dere    4 年前

    URI的外观并不是最重要的部分。你应该考虑的是它是如何呈现给用户的。例如,一个页面应该有一个指向“下一页”的链接和另一个指向“上一页”的链接(如果有)。看看 RFC 5005 Feed Paging and Archiving

        2
  •  4
  •   Allain Lalonde    17 年前

    由于我对REST的理解有限,下面的内容可能是“最”宁静的。

    GET /resource/?page=<pageenr>&asof=<datetime>
    

    因为表示的内容永远不会意外更改,所以可以使用缓存。

    但要真正回答您的问题,我认为参数页是首选方法。

        3
  •  4
  •   LiorH    17 年前

    我会选择选项(2)。为什么?

    1. 稍后可以向查询中添加页面大小参数,以便客户端可以指定页面大小。
    2. 如果没有指定页面参数,您只需返回第一页(默认值)。在许多情况下,客户端可能只需要第一页,因此它简化了客户端和服务器之间的协议。