clojureRESTクライアントは次の2つのパッケージを使用できます
(require '[clj-http.client :as client])
(require '[cheshire.core :as json])
次のようにjsonテストコードを取得します。
(let [url "http://headers.jsontest.com//"
response (client/get url {
:as :reader})]
(with-open [reader (:body response)]
(let [pokemons (json/parse-stream reader true) ]
(println pokemons)
(println (get-in pokemons [:X-Cloud-Trace-Context ]))
(println (get-in pokemons [':X-Cloud-Trace-Context ]))
(println (select-keys pokemons [:X-Cloud-Trace-Context :Host]))
(println (class pokemons ))
)))
clj-http.clientのサポート
- 非同期
- キャッシュ
- http dns、つまり、解決にデフォルト以外のdnsを使用する
- マルチスレッド
- クライアントの再利用、つまり、同じクライアントを使用した複数の呼び出し
- クッキー
チェシャーマップとjsonを変換するときは、キーがデフォルトで「:」で始まるかどうかに注意してください。つまり、キーを取得するには:strを使用し、「:」で始まるにはtrueパラメーターを使用する必要があります。次のテストコードのキーの出力。
(def john-smith {
:f-name "John"
:l-name "Smith"
:phone "555-555-5555"
:address {
:street "452 Lisp Ln."
:city "Macroville"
:state "Kentucky"
:zip "81321"}
:hobbies ["running" "hiking" "basketball"]
:company "Functional Industries"
:title "Sith Lord of Git"})
(println (json/encode john-smith ))
(println (json/generate-string john-smith ))
(println (keys ( json/parse-string (json/generate-string john-smith ) ) ))
(println (keys ( json/parse-string (json/generate-string john-smith ) true) ))
(println (json/generate-string ( json/parse-string (json/generate-string john-smith )) ))