gpt4 book ai didi

clojure - 访问 Compojure 查询字符串

转载 作者:行者123 更新时间:2023-12-04 03:09:13 24 4
gpt4 key购买 nike

我正在尝试从 url 查询字符串中提取一个值,但是我可以返回我认为是 map 的内容,但是当我使用下面的代码时,它不会按预期处理它。谁能建议我如何访问返回的查询字符串数据结构中的特定值?

http://localhost:8080/remservice?foo=bar

(defroutes my-routes
(GET "/" [] (layout (home-view)))
(GET "/remservice*" {params :query-params} (str (:parameter params))))

最佳答案

您需要将处理程序包装在 compojure.handler/api 中或 compojure.handler/site添加适当的中间件以访问 :query-params .这曾经在 defroutes 中自动发生,但不再如此。一旦你这样做了,{params :query-params}解构形式会导致params绑定(bind)到{"foo" "bar"}当你点击 /remservicefoo=bar作为查询字符串。

(或者您可以手动添加 wrap-params 等——它们位于各种 ring.middleware.* 命名空间中;请参阅 the code of compojure.handler (链接到 Compojure 1.0.1 中的相关文件)了解它们的名称。)

例如。

(defroutes my-routes
(GET "/remservice*" {params :query-params}
(str params)))

(def handler (-> my-routes compojure.handler/api))

; now pass #'handler to run-jetty (if that's what you're using)

如果你现在点击 http://localhost:8080/remservice?foo=bar , 你应该看到 {"foo" "bar"} -- 将查询字符串的文本表示解析为 Clojure 映射。

关于clojure - 访问 Compojure 查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963213/

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