参数 - snakevash/ring-clojure-doc-cn GitHub Wiki

URL参数编码是浏览器传参数的主要途径。

因为Ring是一个底层接口, 所有你只有使用正确的中间件才能支持参数解析:

(use 'ring.middleware.params)
(def app
  (wrap-params your-handler))

wrap-params 中简件支持URL参数解析。

默认不支持文件上传, wrap-multipart-params中间件提供这个功能。 查看File Uploads获得更多信息。

wrap-params函数接受一组可选项映射。 推荐的键为:

  • :encoding - 参数编码,默认UTF-8。

应用处理器时, 参数中间件增加三个新建:

  • :query-params - 查询字符串映射
  • :form-params - 表单提交映射
  • :params - 所有参数映射

例如:

{:http-method :get
 :uri "/search"
 :query-string "q=clojure"}

wrap-params中间件会修改请求如下:

{:http-method :get
 :uri "/search"
 :query-string "q=clojure"
 :query-params {"q" "clojure"}
 :form-params {}
 :params {"q" "clojure"}}

可能你只会用到:params键, 但是其他键可以用来帮助你辨别参数是表单传递还是url传递。

键是字符串, 参数也是字符串。

例如:

http://example.com/demo?x=hello

参数映射如下:

{"x" "hello"}

多参数示例:

http://example.com/demo?x=hello&x=world

参数映射:

{"x" ["hello", "world"]}