使用过滤器构建HTTP路由的惯用方法是什么?

时间:2015-10-27 21:00:58

标签: json api rest http

我写了一个提供一些HTTP路由的Web服务,其中一个结构如下:

/grid/get-foos?filters={"type": ["bar"], "status": ["baz", "qux"]}

filters参数是序列化的JSON对象。有一组可接受的键,每个键的值应该是一个数组,如上所述。我正在尝试过滤get-foos,只返回符合过滤条件的foos。上面的内容是“给我带有类型栏的fo和状态为baz OR qux”。

我的团队中有人告诉我,以这种方式序列化JSON并将其粘贴在查询字符串中是非标准的。是吗?我是新来的。

构建过滤像这样的“getter”的API调用最常用的方法(甚至只是一种好方法)是什么?

编辑:应该提到过,这是用clo和compojure编写的。

2 个答案:

答案 0 :(得分:1)

我建议您使用下一种方式:

 /grid/get-foos?types[]=bar&statuses[]=baz&statuses[]=qux

但请记住:你应该有一个可以接受这种类型的参数的框架。

答案 1 :(得分:0)

受@Arsen的启发我发现compojure支持重复参数,请参见此处:How to get repeating request parameters in Compojure

我仍然想知道我最初做的是非标准的......和/或不好的?