gpt4 book ai didi

clojure - Compojure:如何映射查询参数

转载 作者:行者123 更新时间:2023-12-04 01:45:16 26 4
gpt4 key购买 nike

我正在尝试使以下任何映射工作以映射 http://mysite.org/add?http://sitetoadd.comhttp://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)

但我不能使用它,因为我必须传递一个 url 和 http://mysite.org/add/http://sitetoadd.comhttp://mysite.org/add?http://sitetoadd.com is 时无效行。

编辑 : 倾销 request我已经看到 params 是空的。我以为它会包含 POST GET 参数,但唯一能找到我传递的参数的地方是 :查询字符串 (“u=asd”)。它 seems需要一个中间件来解析查询字符串。顺便说一句,我的问题仍然存在。

最佳答案

https://github.com/weavejester/compojure在重大更改下。默认情况下不再绑定(bind) params 映射。如果您在“(defroutes main-routes ... )”中有示例路由,请确保通过“(handler/site main-routes)”激活它,如 https://github.com/weavejester/compojure/wiki/Getting-Started 中所述。因为它是确保参数映射默认绑定(bind)的站点或 api 方法。

这是一个有效的示例:

(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}))

关于clojure - Compojure:如何映射查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7785214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com