【发布时间】:2017-08-11 02:57:23
【问题描述】:
在 REST API 中,使用 URI 查询参数处理集合的排序、过滤和分页被认为是一种很好的做法,例如:
GET /employees?offset=30&limit=15&name=Mary&sort=-surname
不幸的是,在某些“高级”情况下,参数数量可能会“爆炸”,因此这种解决方案不再可行。
回到前面的例子,假设我们想对许多其他字段应用一些更复杂的过滤器(例如:地址包含“NY”,年龄 > 30,年龄 =100000 美元),以及许多其他...)。
显然,在这种情况下,一组简单的查询参数是不合适的。
这样的情况应该怎么设计?也许客户端应该发送一个包含一些代表查询的结构化数据的 POST?关于如何设计此类查询,是否存在或多或少的标准协议?
谢谢!
【问题讨论】:
-
你能定义“高级”案例吗?一般来说,你应该能够量化参数,所以参数的数量不会“爆炸”。
-
将子句与布尔运算符组合(如示例中所示)可能会导致过滤器非常大。另一个在查询中需要大量数据的基本示例可能是“in”运算符,例如:name is in ("Mary", "Jhon", "Carl", ...)
标签: rest