从ring获取URL参数

时间:2014-04-14 05:27:23

标签: clojure ring

从字符串"http://www.youtube.com/watch?v=P76Vbsk_3J0"开始,我想获得{:v P76Vbsk_3J0}

我差不多了:

(#'ring.middleware.params/parse-params "http://www.youtube.com/watch?v=P76Vbsk_3J0" "UTF-8")
=> {"http://www.youtube.com/watch?v" "P76Vbsk_3J0"}

(clojure.walk/keywordize-keys {"http://www.youtube.com/watch?v" "P76Vbsk_3J0"})
=> {:http://www.youtube.com/watch?v "P76Vbsk_3J0"}

我可以从ring获取一些东西让我在那里剩下的路吗?

2 个答案:

答案 0 :(得分:2)

ring.middleware.params/parse-params只希望收到一个查询参数字符串,因此您需要删除?之前的所有内容,这样的内容将起作用:

(#'ring.middleware.params/parse-params
  (second (.split "http://www.youtube.com/watch?v=P76Vbsk_3J0" "\\?"))
  "UTF-8")
;=> {"v" "P76Vbsk_3J0"}

请注意,您使用的函数不属于公共API。

答案 1 :(得分:0)

我不确定您要尝试做什么,但使用ring.middleware.params/wrap-paramsring.middleware.keyword-params/wrap-keyword-params的惯用环方式。然后,请求映射将包含一个:param键,其中包含您想要的内容。