有没有人在您的REST API网址中使用[]或()?
假设的例子:
/cars?[colors]:red,[engineType]:13
/cars?(colors):red,(engineType):13
有没有人发现使用这些问题需要注意或者使用它是否很常见?
这是另一个例子。给我所有的城市,但只有人们喝咖啡的城市
/cities?filter=(people[drinks[type]:6])
或者我甚至可以允许更多集合来执行像这样的AND
/cities?filter=(people[drinks[type]:6]),(another layer of filtering)&paging=(offset:10, limit:2)
基本上在第二个中,逗号本身是查询的隐式AND,因为()表示过滤条件,因此我们有一个过滤条件,逗号,第二个过滤条件,因此这可以很容易地连接到SQL via()和()如果你在解析请求中的url值并将其传递给后端的查询时考虑它。
这是我的想法。
() - 表示一个过滤级别,添加multiple()是多个过滤器 [] - 表示资源的子属性
所以上面允许来电者说给我一个城市列表,但只有那些人喜欢喝咖啡(6型)。
答案 0 :(得分:2)
还没有真正的REST官方规范,但这是非常不寻常的。执行此操作的常规方法是以key = value形式对参数进行urlencode。几乎所有的图书馆都会帮助你做到这一点。您必须手工解析您发明的这种自定义格式(并且您需要弄清楚任何转义问题;如果,
或[
可以成为字符串的一部分,该怎么办?在任何情况下,都不清楚括号会给你带来什么。
更常用的方法是:
/cars?color=red&engineType=13
答案 1 :(得分:0)
到目前为止,我遇到了两种频繁的模式:
/cars/?colors=red&engineType=13
/cars/colors:red/engineType:13/
在URI中使用[]或()并不常见。如果那是你想要的,我不认为你使用它们会有任何问题。如果您也想使用URI模板,请不要使用{}。