在 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.