REST中的高级查询

时间:2012-01-24 00:10:09

标签: rest

我正在尝试为REST创建更高级的查询机制。假设我有以下内容:

GET  /data/users

并返回用户列表。然后过滤返回的用户,例如我会说:

GET /data/users?age=30

获取30岁用户的列表。现在假设我想要30到40岁的用户。我想基本上拥有一组可重复使用的运算符,例如:

GET /data/users?greaterThan(age)=30&lessThan(age)=40

bigThan和lessThan可以在其他数字,日期等字段上重复使用。这也允许我添加其他运算符(包含,开头,结尾等)。我是一个REST菜鸟,所以我不确定这是否违反了REST遵循的任何核心原则。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

或者,使用可选参数“minAge”和“maxAge”可能会更好。

备选方案2:对参数的值进行编码以指示要执行的测试:不等式,模式匹配等。

无论你对复杂的布尔表达式做什么,这都会变得混乱。在某些时候,您几乎想要为查询描述本身制作文档格式,但很难将其视为“GET”。

答案 1 :(得分:1)

我会考虑设置查询参数的值,以包含运算符的语法等。对于一系列值,这样的事情

/data/users?age=[30,40]

/data/users?age=>30&age=<40

会让它更容易阅读,如果你使用任何保留字符,请确保url编码