gpt4 book ai didi

rest - REST API 设计中的高级分页、排序和过滤

转载 作者:行者123 更新时间:2023-12-01 13:36:30 25 4
gpt4 key购买 nike

在 REST API 中,使用 URI 查询参数处理集合的排序、过滤和分页被认为是一种很好的做法,例如:

GET /employees?offset=30&limit=15&name=Mary&sort=-surname

不幸的是,在某些“高级”情况下,参数的数量可能会“爆炸”,因此这种解决方案不再可行。

回到前面的例子,假设我们想对许多其他字段应用一些更复杂的过滤器(例如:地址包含“NY”,年龄 > 30,年龄 <= 40,(婚姻状况是“已婚” AND 工资<100000USD ) 或(婚姻状况为“离婚”且薪水>=100000 美元),以及许多其他...)。

显然,在这种情况下,一组简单的查询参数是不合适的。

这种情况应该怎么设计?也许客户端应该发送一个包含一些代表查询的结构化数据的 POST?关于如何设计此类查询,是否有或多或少的标准协议(protocol)?

谢谢!

最佳答案

一种方法是使搜索过滤器成为 REST 资源,这意味着创建新的 REST 方法:

  • 发布 /filters ,期待一个带有过滤器的 body ,例如(marital status is "married" AND salary<100000USD) OR (marital status is "divorced" AND salary>=100000USD)并返回此搜索的唯一 ID,以及(为了避免往返服务器)第一个结果,以及指向下一个结果的链接
  • 获取 /filters/<id>/<offset> ,返回搜索结果 idoffset 开始
  • 关于rest - REST API 设计中的高级分页、排序和过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42893301/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com