Sha*_*ari 8 clojure compojure http-headers
org.clojure/clojure-contrib"1.2.0"ring"1.1.8"compojure"1.1.5"clout"1.1.0"
(defroutes rest-routes
(GET "/" [] "<p> Hello </p>")
(POST "/api/v1/:stor/sync" [stor] (start-sync stor))
(POST ["/api/v1/:stor/:txn/data/:file" :file #".*"] [stor txn file] (txn-add stor txn file))
(ANY "*" [] "<p>Page not found. </p>"))
Run Code Online (Sandbox Code Playgroud)
在第二个POST中,我还想将所有http-header传递给"txn-add"处理程序.我做了很多谷歌并查看代码,但找不到任何有用的东西.
我知道,我可以使用以下方法来传递标题(但是它不会解析网址请求),
(POST "/api/v1"
{headers :headers} (txn-add "dummy stor" "dummy txn" headers))
Run Code Online (Sandbox Code Playgroud)
另外,如何将POST请求的内容(即:正文)传递给"txn-add"?
Joo*_*aat 10
如果GET,POST等的第二个参数不是向量,那么它是一个解构绑定形式request.这意味着你可以做以下事情:
(GET "/my/path"
{:keys [headers params body] :as request}
(my-fn headers body request))
Run Code Online (Sandbox Code Playgroud)
挑选request你想要的部分.请参阅Ring SPEC和Clojure关于绑定和解构的文档
可以使用绑定中的:as关键字在绑定中指定整个请求映射,然后用于读取标题或正文:
(POST ["/api/v1/:stor/:txn/data/:file" :file #".*"]
[stor txn file :as req]
(my-handler stor txn file req))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3164 次 |
| 最近记录: |