clj-http
clj-http copied to clipboard
`:query-params` are re-ordered
I ran a simple server like this
nc -kl 28139
and ran this Clojure code:
(require '[clj-http.client :as client])
(client/get "http://localhost:28139/house-sitting/" {:query-params {"page" "1"
"available" ["" "1"]
"location" "0"
"city[id]" "0"
"city[locality]" ""
"city[locality_text]" ""
"city[administrative_area_level_2]" ""
"city[administrative_area_level_2_text]" ""
"city[administrative_area_level_1]" ""
"city[administrative_area_level_1_text]" ""
"city[country]" ""
"city[country_text]" ""
"city[latitude]" ""
"city[longitude]" ""
"city[zoom]" ""
"city[name]" ""
"region[id]" "0"
"region[locality]" ""
"region[locality_text]" ""
"region[administrative_area_level_2]" ""
"region[administrative_area_level_2_text]" ""
"region[administrative_area_level_1]" ""
"region[administrative_area_level_1_text]" ""
"region[country]" ""
"region[country_text]" ""
"region[latitude]" ""
"region[longitude]" ""
"region[zoom]" ""
"region[name]" ""
"country" ""
"environment" ""
"population" ""
"period" "0"
"date" "2017-03-03"
"datestart" "2017-03-03"
"dateend" "2017-06-24"
"season" ""
"duration" ""
"isfd" ""
"stopover" ""}})
like this
clj -Sdeps '{:deps {clj-http/clj-http {:mvn/version "3.12.3"} cheshire/cheshire {:mvn/version "5.11.0"}}}' -M main.clj
What I exected:
GET /house-sitting/?page=1&available=&available=1&location=0&city%5Bid%5D=0&city%5Blocality%5D=&city%5Blocality_text%5D=&city%5Badministrative_area_level_2%5D=&city%5Badministrative_area_level_2_text%5D=&city%5Badministrative_area_level_1%5D=&city%5Badministrative_area_level_1_text%5D=&city%5Bcountry%5D=&city%5Bcountry_text%5D=&city%5Blatitude%5D=&city%5Blongitude%5D=&city%5Bzoom%5D=&city%5Bname%5D=®ion%5Bid%5D=0®ion%5Blocality%5D=®ion%5Blocality_text%5D=®ion%5Badministrative_area_level_2%5D=®ion%5Badministrative_area_level_2_text%5D=®ion%5Badministrative_area_level_1%5D=®ion%5Badministrative_area_level_1_text%5D=®ion%5Bcountry%5D=®ion%5Bcountry_text%5D=®ion%5Blatitude%5D=®ion%5Blongitude%5D=®ion%5Bzoom%5D=®ion%5Bname%5D=&country=&environment=&population=&period=0&date=2017-03-03&datestart=2017-03-03&dateend=2017-06-24&season=&duration=&isfd=&stopover= HTTP/1.1
But instead I got the query params in a different order than they appear in the source code:
GET /house-sitting/?region%5Bid%5D=0&city%5Blocality%5D=&city%5Blocality_text%5D=&city%5Badministrative_area_level_1_text%5D=®ion%5Badministrative_area_level_1%5D=&country=&season=&dateend=2017-06-24®ion%5Bcountry_text%5D=®ion%5Blocality%5D=&city%5Bzoom%5D=&city%5Blatitude%5D=&city%5Blongitude%5D=&city%5Bname%5D=&isfd=&datestart=2017-03-03&city%5Badministrative_area_level_1%5D=&location=0®ion%5Badministrative_area_level_2%5D=&city%5Badministrative_area_level_2_text%5D=&population=®ion%5Blatitude%5D=&duration=®ion%5Blongitude%5D=&environment=®ion%5Bzoom%5D=®ion%5Badministrative_area_level_2_text%5D=®ion%5Bname%5D=&date=2017-03-03®ion%5Badministrative_area_level_1_text%5D=&period=0&city%5Bcountry_text%5D=&city%5Bcountry%5D=&city%5Bid%5D=0&city%5Badministrative_area_level_2%5D=&page=1&stopover=&available=&available=1®ion%5Blocality_text%5D=®ion%5Bcountry%5D= HTTP/1.1
Sorry in advance if this is a dumb issue, I am a clojure noob but https://stackoverflow.com/questions/27876324/is-the-order-of-the-result-is-the-same-when-convert-map-to-vector-in-clojure says that clojure map literals retain insertion order.