适用于你的 Go Web Server,包装你的请求,提供分页信息的解析。
特色:
- 从 URI 中解析出分析信息:
- 抽取 page 和 page_size
- 抽取其它的查询键值对
- 装饰你的响应体:
- 提供分页的导航字段:page, page_size, total
- 提供超媒体链接:first, last, prev, next
- 提供查询键值对
- 获取计算值:
- 获取 URI 中是否有分页信息,没有将使用默认分页信息,page = 1, page_size = 30
- 获取的查询 offset 与 length
- 获取手动切片资源的起止 indices
- 计算其它页或者 list 中某一个资源它对应的分页信息
- 编辑 / 重写一些字段:
- 修改 page, page_size 的值
- 修改查询键值对的值
- 支持自动切片长列表到分页的范围内
- 配置一下初始属性
用法:
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 ~