Go 的分页器,提供响应的资源列表分页支持

2019-03-27 10:41:42 +08:00
 sunjourney

适用于你的 Go Web Server,包装你的请求,提供分页信息的解析。

特色:

  1. 从 URI 中解析出分析信息:
    • 抽取 page 和 page_size
    • 抽取其它的查询键值对
  2. 装饰你的响应体:
    • 提供分页的导航字段:page, page_size, total
    • 提供超媒体链接:first, last, prev, next
    • 提供查询键值对
  3. 获取计算值:
    • 获取 URI 中是否有分页信息,没有将使用默认分页信息,page = 1, page_size = 30
    • 获取的查询 offset 与 length
    • 获取手动切片资源的起止 indices
    • 计算其它页或者 list 中某一个资源它对应的分页信息
  4. 编辑 / 重写一些字段:
    • 修改 page, page_size 的值
    • 修改查询键值对的值
  5. 支持自动切片长列表到分页的范围内
  6. 配置一下初始属性

用法:

	pg := pagination.DefaultPagination()

	pgt := pg.Parse(requestURI)

	paginatedData := pgt.WrapWithTruncate(TrunctableBooks(books), total)

	responseBody, _ := json.MarshalIndent(paginatedData, "", "    ")

	fmt.Println(string(responseBody))
	offset, length := pgt.GetOffsetRange()

	total, items := db.Offset(offset).Limit(length).Query()
	start, end := pgt.GetRange()

	total, items := db.QueryAll()
	items = items[start:end]

项目地址: https://github.com/zheeeng/pagination

求万能的 V 友的 star ~

1600 次点击
所在节点    分享创造
0 条回复

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

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

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

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

© 2021 V2EX