pis*_*hio 11 clojure compojure
我正在尝试使以下任何映射工作到映射http://mysite.org/add?http://sitetoadd.com或http://mysite.org/add?u=http://sitetoadd.com
(GET "/add?:url" [url] url)
(GET "/add?u=:url" [url] url)
(GET "/add" {params :params} (params :u))
(GET "/add" {params :params} (params "u"))
(GET "/add" [u] u)
Run Code Online (Sandbox Code Playgroud)
但它失败了,我不知道为什么.另一方面,这工作:
(GET "/add/:url" [url] url)
Run Code Online (Sandbox Code Playgroud)
但是我不能使用它,因为我必须传递一个URL并且http://mysite.org/add/http://sitetoadd.com在http://mysite.org/add?http://sitetoadd.com isok时无效.
编辑:倾销request我已经看到params是空的.我认为它将包含POST 和 GET参数,但我能找到我传递的参数的唯一地方是:query-string("u = asd").这似乎是一个中间件需要分析查询字符串.顺便提一下,我的问题仍然存在.
Mar*_*ahl 20
请参阅Breaking Changes下的https://github.com/weavejester/compojure.默认情况下,params映射不再绑定.如果您的示例路由在"(defroutes main-routes ...)"中,请确保通过"(handler/site main-routes)"激活它,如https://github.com/weavejester/compojure上所述/ wiki/Getting-Started因为它是站点或api方法,确保默认情况下params映射被绑定.
这是一个有效的例子:
(ns hello-world
(:use compojure.core, ring.adapter.jetty)
(:require [compojure.route :as route]
[compojure.handler :as handler]))
(defroutes main-routes
(GET "/" {params :params} (str "<h1>Hello World</h1>" (pr-str params)))
(route/not-found "<h1>Page not found</h1>"))
(defn -main [& m]
(run-jetty (handler/site main-routes) {:port 8080}))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9573 次 |
| 最近记录: |