Clojure ring从哪里获得表单的包装参数信息?

Clojure ring从哪里获得表单的包装参数信息?,clojure,ring,Clojure,Ring,我试图深入研究ring,并使用以下代码查看请求映射中发生的情况: (require '[ring.adapter.jetty :as serv]) (require '[ring.middleware.params :as wp]) (defn base-handler [params] {:code 200 :type "txt/html" :body (str params)}) (defn wp-handler [params] ((wp/wrap-params b

我试图深入研究ring,并使用以下代码查看请求映射中发生的情况:

(require '[ring.adapter.jetty :as serv]) (require '[ring.middleware.params :as wp]) (defn base-handler [params] {:code 200 :type "txt/html" :body (str params)}) (defn wp-handler [params] ((wp/wrap-params base-handler) params)) (serv/run-jetty #'wp-handler {:port 8099}) 您可以看到查询字符串中有hello=3

但是对于post,响应有:content-type-application/x-www-form-urlencoded,整个响应如下面的示例所示,我没有看到任何表单参数:

{:ssl-client-cert nil, :remote-addr "127.0.0.1", :scheme :http, :request-method :post, :query-string nil, :content-type "application/x-www-form-urlencoded", :uri "/api/tasks/remove", :server-name "localhost", :headers {"user-agent" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", "origin" "http://localhost:8099", "accept-charset" "ISO-8859-1,utf-8;q=0.7,*;q=0.3", "accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "host" "localhost:8099", "referer" "http://localhost:8099/form.html", "content-type" "application/x-www-form-urlencoded", "cache-control" "max-age=0", "accept-encoding" "gzip,deflate,sdch", "content-length" "23", "accept-language" "en-US,en;q=0.8", "connection" "keep-alive"}, :content-length 23, :server-port 8099, :character-encoding nil, :body #} 特别是这一行:

parse params slurp body:编码

但我不确定它在做什么。

根据parse params的源代码判断,它永远不会被调用,因为您的请求是application/x-www-form-urlencoded。请参阅请求类型的说明

如何发送邮寄请求?据我所知,参数是以多部分/表单数据模式发送的,但请求本身被标记为application/x-www-form-urlencoded

{:ssl-client-cert nil, :remote-addr "127.0.0.1", :scheme :http, :request-method :post, :query-string nil, :content-type "application/x-www-form-urlencoded", :uri "/api/tasks/remove", :server-name "localhost", :headers {"user-agent" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11", "origin" "http://localhost:8099", "accept-charset" "ISO-8859-1,utf-8;q=0.7,*;q=0.3", "accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "host" "localhost:8099", "referer" "http://localhost:8099/form.html", "content-type" "application/x-www-form-urlencoded", "cache-control" "max-age=0", "accept-encoding" "gzip,deflate,sdch", "content-length" "23", "accept-language" "en-US,en;q=0.8", "connection" "keep-alive"}, :content-length 23, :server-port 8099, :character-encoding nil, :body #}
(defn- assoc-form-params
  "Parse and assoc parameters from the request body with the request."
  [request encoding]
  (merge-with merge request
    (if-let [body (and (urlencoded-form? request) (:body request))]
      (let [params (parse-params (slurp body :encoding encoding) encoding)]
        {:form-params params, :params params})
      {:form-params {}, :params {}})))