Clojure/Compojureでは、マップをURLクエリ文字列に変換するにはどうすればよいですか?マップをClojure/Compojure/RingのURLクエリ文字列に変換する方法は?
foo=1&bar=2&baz=3
へ
{:foo 1 :bar 2 :baz 3}
compojureでこれを行うには、いずれかのユーティリティメソッドがありますか?
Clojure/Compojureでは、マップをURLクエリ文字列に変換するにはどうすればよいですか?マップをClojure/Compojure/RingのURLクエリ文字列に変換する方法は?
foo=1&bar=2&baz=3
へ
{:foo 1 :bar 2 :baz 3}
compojureでこれを行うには、いずれかのユーティリティメソッドがありますか?
はい、このためのユーティリティはヒカップかを伴わないすでにあります独自の文字列/結合/ URLエンコーダ関数をロールバックする:
user=> (ring.util.codec/form-encode {:foo 1 :bar 2 :baz 3})
"foo=1&bar=2&baz=3"
user=>
Compojureはring/coreに依存しています。これにはring.util.codecが含まれているので、既に持っています。
ような何か:
(defn params->query-string [m]
(clojure.string/join "&" (for [[k v] m] (str (name k) "=" v))))
はそれを行う必要があります...
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>
また、 'javaを使用することもできます。 ([kv] m)(str(name k) "="(java.net.URLEncoder/encode v))) 'の各値に対して、' net.URLEncoder.encode'を実行します。 – user100464
私は同じことをしましたが、これを行うユーティリティメソッドがありますか? – Sathish
@ Sathish [Hiccup](http://weavejester.github.com/hiccup/)では、[関連する機能](http://weavejester.github.com/hiccup/hiccup.util.html#var-url)を提供しています。 (helic "{:a 1:b 2})=>"/hello?a = 1&b = 2 "'単一のユーティリティー機能のためだけにHiccupに依存関係を追加したくない場合は、実際に関数を書くのは大したことではありません。 –
[構成部品からのURLのClojureビルド]の可能な複製(http://stackoverflow.com/questions/3644125/clojure-building-of-url-from-constituent-parts) –