Sat*_*ish 13 clojure compojure ring
在Clojure/Compojure中,如何将地图转换为URL查询字符串?
{:foo 1 :bar 2 :baz 3}
Run Code Online (Sandbox Code Playgroud)
至
foo=1&bar=2&baz=3
Run Code Online (Sandbox Code Playgroud)
在compojure中有没有任何实用方法呢?
小智 21
是的,有一个实用程序,它不涉及打嗝或滚动你自己的字符串/ join/URLEncoder函数:
user=> (ring.util.codec/form-encode {:foo 1 :bar 2 :baz 3})
"foo=1&bar=2&baz=3"
user=>
Run Code Online (Sandbox Code Playgroud)
Compojure依赖于ring/ring-core,其中包括ring.util.codec,因此您已经拥有它.
就像是:
(defn params->query-string [m]
(clojure.string/join "&" (for [[k v] m] (str (name k) "=" v))))
Run Code Online (Sandbox Code Playgroud)
应该这样做......
REPL会议:
user> (defn params->query-string [m]
(clojure.string/join "&"
(for [[k v] m]
(str (name k) "=" (java.net.URLEncoder/encode v)))))
#'user/params->query-string
user> (params->query-string {:foo 1 :bar 2 :baz 3})
"foo=1&bar=2&baz=3"
user>
Run Code Online (Sandbox Code Playgroud)