我写了一个提供一些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编写的。
答案 0 :(得分:1)
我建议您使用下一种方式:
/grid/get-foos?types[]=bar&statuses[]=baz&statuses[]=qux
但请记住:你应该有一个可以接受这种类型的参数的框架。
答案 1 :(得分:0)
受@Arsen的启发我发现compojure支持重复参数,请参见此处:How to get repeating request parameters in Compojure
我仍然想知道我最初做的是非标准的......和/或不好的?