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)
但它失败了,我不知道为什么。另一方面,这是可行的:
(GET "/add/:url" [url] url)
但我无法使用它,因为我必须传递一个网址,并且 http://mysite.org/add/http://sitetoadd.com
无效,而http://mysite.org/add?http://sitetoadd.com
可以。
编辑:转储请求
我发现参数为空。我认为它会包含 POST 和 GET 参数,但我可以找到我传递的参数的唯一地方是 :query-string ("u=asd") 。 似乎需要一个中间件来解析查询字符串。顺便说一句,我的问题仍然存在。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请参阅“重大更改”下的 https://github.com/weavejester/compojure。默认情况下,参数映射不再受约束。如果您的示例路由位于“(defroutes main-routes ... )”内,请确保通过“(handler/site main-routes)”激活它,如 https://github.com/weavejester/compojure/wiki/Getting-Started 因为它是确保 params 映射得到绑定的站点或 api 方法经过 默认。
这是一个有效的示例:
See https://github.com/weavejester/compojure under Breaking Changes. The params map is no longer bound by default. If you have your example routes inside a "(defroutes main-routes ... )", make sure you activate it through "(handler/site main-routes)" as explained on https://github.com/weavejester/compojure/wiki/Getting-Started as it is the site or api method that makes sure the params map gets bound by default.
Here's an example that works: