如何使用 Compojure 获取 POST 请求的所有参数
How to get all the params of a POST request with Compojure
根据Compojure documentation on routes,我可以很容易地得到这样的个别参数:
(POST "/my-app" [param1 param2]
(str "<h1>Hello " param1 " and " param2 "</h1>"))
如何获取 所有 参数,而不仅仅是单个参数?
我只是猜想将 & params
放入向量中并且成功了:
(POST "/my-app" [& params]
(str "<h1>Hello " params "</h1>"))
compojure 处理程序接收整个请求映射作为它们的参数,因此处理程序还可以访问所有参数。例如,要查看整个请求:
(POST "/" request
(str request))
或者,提取所有表单参数:
(POST "/" request
(str (:form-params request)))
问题中使用的语法是特定于 compojure 的 destructuring syntax,它允许从请求中提取单个参数。这类似于 clojure 通常的解构语法,并且与通常的解构一样,compjure 的解构也允许混合解构并仍然获得整个请求:
(POST "/" [param1 param2 :as request]
(str (:form-params request)))
或者,提取命名参数和所有 "additional" 参数:
(POST "/" [param1 param2 & more-params]
(str more-params))
像这样return所有参数:
(POST "/test" {params :params}
(str "POST params=" params))
使用此表示法访问特定参数:
(println (params :Nom))
根据Compojure documentation on routes,我可以很容易地得到这样的个别参数:
(POST "/my-app" [param1 param2]
(str "<h1>Hello " param1 " and " param2 "</h1>"))
如何获取 所有 参数,而不仅仅是单个参数?
我只是猜想将 & params
放入向量中并且成功了:
(POST "/my-app" [& params]
(str "<h1>Hello " params "</h1>"))
compojure 处理程序接收整个请求映射作为它们的参数,因此处理程序还可以访问所有参数。例如,要查看整个请求:
(POST "/" request
(str request))
或者,提取所有表单参数:
(POST "/" request
(str (:form-params request)))
问题中使用的语法是特定于 compojure 的 destructuring syntax,它允许从请求中提取单个参数。这类似于 clojure 通常的解构语法,并且与通常的解构一样,compjure 的解构也允许混合解构并仍然获得整个请求:
(POST "/" [param1 param2 :as request]
(str (:form-params request)))
或者,提取命名参数和所有 "additional" 参数:
(POST "/" [param1 param2 & more-params]
(str more-params))
像这样return所有参数:
(POST "/test" {params :params}
(str "POST params=" params))
使用此表示法访问特定参数:
(println (params :Nom))