在 RESTful 的查询设计中,通过 URL query 传递查询参数大部分只能使用 a=1&b=2 这样的形式,一些情况下总感觉不够用,尤其是在范围查询的时候,很难表达条件是大于一个数且小于一个数的情况。
所以考虑通过一些符号增加查询参数的表达,归纳了一些想法如下:
可用数值比较的情况:
date=2019-01-01:相等查询date=[2019-01-01,2019-01-31]:范围查询date=[2019-01-01,2019-02-01):闭开区间date=[2019-01-01,2019-01-31]|[2019-03-01,2019-03-31]:多区间查询date=[,2019-01-31]|[2019-03-31,]:半区间查询其中 | 连接同一个参数的“或”(OR)条件,() 和 [] 表达开闭区间。
同时也想到针对字符串匹配的情况:
name=keyword:精确匹配name=keyword*:开头匹配name=*keyword:结尾匹配集合查询:
id={1,2}:IN 表达反转条件:
date=![2019-01-01,2019-02-01):不在 2019 年 1 月内的日期name=!keyword:不相等id=!{1,2}:NOT IN 表达AND)条件暂时还没想好如何表达,也许可以用 ^ 符号代替?<> 代替?或者因为情况太少可以放弃。目前也只是个非常初步的想法,不知道各位在实践中有没有更好的方法?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.