Clojure 从环中获取URL参数

Clojure 从环中获取URL参数,clojure,ring,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/keywordi

以字符串
开头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
中获取,让我完成剩下的工作吗?

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的一部分。

我不确定您想做什么,但惯用的环方法是使用
ring.middleware.params/wrap-params
ring.middleware.keyword-params/wrap-keyword-params
。然后请求映射将包含一个带有所需内容的
:param
键。

我不是从请求开始的。我从一个
GET
URL字符串开始,并使用
ring
库获取
GET参数。或者,我不明白你在说什么;你能发布一个代码示例吗?如果你不是从一个请求开始,我的代码就帮不了你。我只是指出,如果您使用请求,有一种简单的方法可以实现您想要的。很抱歉。