我正在尝试为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遵循的任何核心原则。有什么想法吗?
答案 0 :(得分:1)
或者,使用可选参数“minAge”和“maxAge”可能会更好。
备选方案2:对参数的值进行编码以指示要执行的测试:不等式,模式匹配等。
无论你对复杂的布尔表达式做什么,这都会变得混乱。在某些时候,您几乎想要为查询描述本身制作文档格式,但很难将其视为“GET”。
答案 1 :(得分:1)
我会考虑设置查询参数的值,以包含运算符的语法等。对于一系列值,这样的事情
/data/users?age=[30,40]
或
/data/users?age=>30&age=<40
会让它更容易阅读,如果你使用任何保留字符,请确保url编码