我正在用Clojure中实现的旧API替换旧的PHP API。 API具有接受数组样式参数的端点,例如:
http://localhost/create?person[name]=John&person[gender]=m
PHP会产生这个:
array(
"person" => array(
"name" => "John",
"gender" => "m"
)
)
我们目前正在使用Ring的wrap-params来处理参数。如果您查看source的环输入解码,您会看到该环采用解码输入参数的简单视图 - 只需将其拆分为&
和=
。因此产生以下结果:
{"person[name]" "John"
"person[gender]" "m"}
明确地说,在Clojure中,我想要以下参数:
{"person" {"name" "John"
"gender" "m"}}
如何设置我的铃声应用程序以正确接受PHP支持的数组样式参数?我可以使用任何第三方中间件吗?
答案 0 :(得分:0)
如果您需要支持这些嵌套参数数组,则ring.middleware.nested-params
包中会提供该功能。 wrap-nested-params
中间件与wrap-params
一起使用 - params将数据放入请求映射的:params
键中,嵌套的params将其替换为完全展开的输入。
(use '[ring.middleware.params :only (wrap-params)])
(use '[ring.middleware.nested-params :only (wrap-nested-params)])
(def app (wrap-params (wrap-nested-params your-handler)))