Compojure 路由丢失参数信息

2024-02-27

My code:

(defn json-response [data & [status]]
    {:status (or status 200)
     :headers {"Content-Type" "application/json"}
     :body (json/generate-string data)})

(defroutes checkin-app-handler
  (GET "/:code" [code & more] (json-response {"code" code "params" more})))

当我将文件加载到 repl 并运行此命令时,参数似乎为空:

$ (checkin-app-handler {:server-port 8080 :server-name "127.0.0.1" :remote-addr "127.0.0.1" :uri "/123" :query-string "foo=1&bar=2" :scheme :http :headers {} :request-method :get})
> {:status 200, :headers {"Content-Type" "application/json"}, :body "{\"code\":\"123\",\"params\":{}}"}

我究竟做错了什么?我需要获取查询字符串,但参数映射始终为空。


为了将查询字符串解析到 params 映射中,您需要使用 params 中间件:

(ns n
  (:require [ring.middleware.params :as rmp]))

(defroutes checkin-app-routes
  (GET "" [] ...))

(def checkin-app-handler
  (-> #'checkin-app-routes
      rmp/wrap-params
      ; .. other middlewares
      ))

请注意,var (#'checkin-app-routes)并不是绝对必要的,但它使路由关闭,包装在中间件内,在重新定义路由时拾取更改。

IOW你也可以写

(def checkin-app-handler
  (-> checkin-app-routes
      rmp/wrap-params
      ; .. other middlewares
      ))

但是,当以交互方式重新定义路由时,您也需要重新定义处理程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Compojure 路由丢失参数信息 的相关文章

  • 在 PHP 的 require_once 中使用查询字符串

    在我的其中一个页面上有一个require once path to url page php 没有任何问题 当我添加查询字符串时require once path to url page php var test 它将不再包含该文件 只是一
  • 是否有一个在线工具可以像 JSON 一样自动缩进和格式化 Clojure 代码?

    有很多在线工具可以获取 JSON 文本 并向您显示该文本的格式化和缩进格式 有些甚至更进一步 形成了一个漂亮的树状结构 http jsonviewer stack hu http jsonviewer stack hu 我们有类似的 Clo
  • 无法使用 Leiningen 构建 jar

    我正在尝试使用 Intellij 的 Cursive 中的 Leiningen 插件从我的基本 Clojure 项目中制作一个独立的 jar 为了创建项目 我刚刚创建了 project clj 文件 将其打开 Cursive 提出将其导入为
  • 在环形应用程序中捕获异常的惯用方法

    处理环形应用程序中的异常的惯用方法是什么 我想捕获异常并返回 500 页 我怎么做 我在下面的代码中使用了 Mustache 但是它不起作用 def my app try app wrap logger true wrap keyword
  • 我可以 POST 和 GET 到同一个 PHP 页面吗

    例如 我想知道是否可以在同一个 php 页面上进行 GET 和 POST 我想将数据发送到 http www example com my php 所以首先是 GET http www example com my php task dos
  • java与maven和eclipse中的clojure混合

    我创建了一个示例多语言程序 我有一个用java实现的传感器和一个机器人 以及用clojure实现的AI 我无法正确连接maven src main java clojuretest DistanceSensor java AI clj us
  • 为什么“(def 元音?(set“aeiou”))”有效?

    我正在看优秀的 Clojure 教程here http ociweb com jnb jnbMar2009 html 在其中一个示例中 它具有如下所示的 Clojure 代码 def vowel set aeiou 这使得元音对于元音返回
  • 好的 Clojure 代码示例? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在第一次查看 Clojure 我发现查看 Clojure 核心库的 doc xxx 和 sourc
  • 在 Clojure 中递归反转序列

    我想在 Clojure 中反转序列而不使用reverse函数 并递归地执行此操作 这是我想出的 defn reverse recursively coll loop r rest coll acc conj first coll if co
  • 为什么 clojure future 会阻塞主线程?

    我有一个简单的 lein 项目 其中 main包含一个未来 def f future 42 defn main args println f 当我跑步时lein run它打印42但不返回 我不明白为什么它不返回 如何得到lein run回来
  • 用于正则表达式匹配及其在字符串中的位置的紧凑 Clojure 代码

    斯图尔特 哈洛威举了个例子 re seq w The quick brown fox 作为在 Clojure 中查找正则表达式匹配项的自然方法 在他的书中 这种构造与匹配器上的迭代进行了对比 如果人们关心的只是一份比赛列表 那就太好了 但是
  • 为什么leiningen启动时那么慢?

    我在用着lein repl在控制台中执行 clojure repl 当我运行它时 需要超过15秒 当我跑步时java cp clojure 1 6 0 jar clojure main 只需几秒钟 Why is lein repl太慢了 有
  • 我从 clojure 和 python 中得到的 hmac 签名略有不同

    我从 python 实现和 clojure 实现中获得的 HMAC SHA1 签名略有不同 我很困惑什么会导致这种情况 Python实现 import hashlib import hmac print hmac new my key my
  • 使用 ProGuard 混淆 clojure uberjar

    我想知道是否有人有使用 proguard 混淆他们的 leiningen 编译的 uberjar 的经验 我已经尽力在谷歌上寻找解决方案 但找不到真正的答案 我想知道这是否可能 我一直在尝试混淆默认的 lein 项目 这是 core clj
  • 如何应用Clojure? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习 Clojure 我真的很喜欢它的一些功能 是时候考虑一 些真正的 宠物项目 了 我意识到我不知道如何真正做到这一点use克
  • Clojure 宏:从地图创建本地变量 [重复]

    这个问题在这里已经有答案了 我有这个示例代码 我通过迭代映射的键值对来创建变量 defmacro block bindings body let mapcat fn k v if symbol k k symbol name k v bin
  • Clojure 中 with-local-vars 和 with-bounds 之间的区别

    Clojure 的文档with local vars http clojuredocs org clojure core clojure core with local vars and with bindings http clojure
  • 是否有一个 clojure 函数可以“连接”两个地图列表?

    我正在寻找一个类似于sql中的join的连接函数 例如 这是两个地图列表 def a user id 1 name user 1 user id 2 name user 2 def b user id 2 email e 2 user id
  • HTTP 查询字符串和 []

    PHP 使用 在查询参数名称中 以确保多次出现的参数都出现在 GET超全局变量 否则只出现最后一次出现的情况 还有其他软件可以做到这一点吗 但从RFC 3986 https www rfc editor org rfc rfc3986 以及
  • 尝试使用curl进行GET,发送的值允许为空

    我正在尝试使用curl 来执行一个简单的GET 其中包含一个名为redirect uri 的参数 被调用的 php 文件打印出 GET redirect uri 的空字符串 它显示 red 并且似乎没有发送任何内容 执行获取操作的代码 Ge

随机推荐

  • 通过 WebApp 与本地 PC 交互

    我目前正在开发一个公司内部网应用程序 部分要求是让应用程序在用户本地 PC Minitab 上启动一个程序 然后让 Web 应用程序通过其 COM 接口与其进行通信 做这样的事情我有什么选择 一个签名的 Java 小程序和Jacob htt
  • 在 JavaScript 中计算两个数组的交集[重复]

    这个问题在这里已经有答案了 给定两个长度不等的数组 var arr1 mike sue tom kathy henry arr1 length 5 var arr2 howey jim sue jennifer kathy hank ale
  • 从jupyter服务器下载数据

    我通过连接到服务器来使用 ipython 笔记本 我不知道如何以编程方式将内容 例如数据框 csv 文件等 下载到我的本地计算机 因为我无法具体声明路径 如 C user 它将被下载到他们的机器而不是我的机器上 在其中一个笔记本的单独单元格
  • svelte 包应该是依赖项还是 devDependency?

    我知道已经有很多帖子讨论了两者之间的区别dependency and devDependency但我没有找到任何解释 svelte 情况的信息 所以让我们在这里打开这个 在大多数 svelte 包中 比如svelte 材质 ui https
  • 在 VS2012 上禁用 C++11 功能

    是否可以在 VS2012 上禁用 C 11 功能 我的代码还没有准备好 我不想引入进一步的混乱 从 Visual C 2015 Update 3 开始 现在可以为语言行为指定语言版本 显然它不仅仅影响一致性检查 https blogs ms
  • 我应该在 ejs 文件中使用脚本标签吗?

    我正在学习如何开发节点应用程序 这是一个人们可以发布城市周围发生的事件的应用程序 我有一个 ejs 文件 new ejs 它允许用户提交新事件 显然 有一个事件开始时间和结束时间 我想确保结束时间在开始时间之后 所以我简单地添加了一个脚本来
  • 如何从 Maven 的主文件夹访问测试类?

    我创建了一个具有标准文件夹结构的 Maven 项目 i n src main java src test java 等 我写了一个类ClassA和一个测试类TestA 在ClassA的主程序中 我引用了TestA的一个静态成员 代码可以编译
  • 设置数组所有值的最快方法?

    我有一个char 我想将每个索引的值设置为相同char value 有一个明显的方法可以做到这一点 迭代 char f char c new char 50 for int i 0 i lt c length i c i f 但我想知道是否
  • Xamarin.Forms Shell GoToAsync 在 iOS 中无法按预期工作

    我正在使用 Xamarin Forms Shell 功能 我需要从一个选项卡 根 导航到另一个选项卡 第二级 该示例有三个页面 为简单起见 我将其命名为 Page1 Page2 和 Page3 Page1 和 Page2 是 App She
  • 使用 Python unittest 测试回调调用的正确方法是什么?

    我有一个如下所示的应用程序代码 Filename app py class Foo def init self self callback None def set handler self callback self callback c
  • setjmp.h 中定义的 C 语言非本地跳转如何工作?

    The C语言参考手册 附录B描述了两个函数setjmp and longjmp对于所谓的东西非局部跳转 除了基本的了解之外setjmp保存状态信息 longjmp 恢复state 我一直无法理解此功能的确切流程和用例 那么 这个功能到底有
  • Coq - 在不丢失信息的情况下归纳函数

    当尝试对函数的结果 返回归纳类型 执行案例分析时 我在 Coq 中遇到了一些麻烦 当使用通常的策略时 比如elim induction destroy等等 信息就会丢失 我举个例子 我们首先有一个像这样的函数 Definition f n
  • 尽管 pip3 模块安装满意,为什么 R 库“ssw”找不到通过 pip3 安装的 python 模块?

    I am on Ubuntu 20 04 1 LTS focal 并使用R 我想在 R 中安装一个库 以基于 Smith Waterman 算法但通过更快的实现来执行本地序列比对 The R图书馆是ssw可以在这里找到 https gith
  • 将图像添加到 Android ListView 的简单方法

    我有一个 lisview 我想向其中添加图像 我早期发现的示例显示使用 simple list item 1 但它似乎不允许我想要的 如果可能的话 我还希望能够独立地更改项目的颜色 所以 一 的文本是红色 二 是蓝色 等等 主要 xml
  • 获取 ListView 内的 PasswordBox 的值

    我有一个 ListView 它有 3 个 GridViewColumns 和大约 10 个项目 第三个GridViewColumn的内容是
  • 如何查找包含 URL 的推文?

    是否可以搜索链接到特定 URL 或域 更好 的推文 已经有一个服务可以做到这一点 但我不知道如何通过 twitter Api 自己做到这一点 http backtweets com api http backtweets com api 仅
  • 解析 JSON POST 请求 C#

    某些服务器发送带有以下信息的 POST 请求 payload uid 900af657a65e amount 50 adjusted amount 25 signature 4dd0f5da77ecaf88628967bbd91d9506
  • 如何在 Mac OS X 上的 Git 中处理文件名中的重音字符转换为 unicode

    在我的 Git 存储库中 重音文件为 800x600 jpg 但在进行克隆后 我无法执行拉取操作 因为该文件显示为已修改 git clone done git status On branch master Untracked files
  • Swift 3 - 如何让计时器在后台工作

    我正在尝试制作一个可以使计时器在后台运行的应用程序 这是我的代码 let taskManager Timer scheduledTimer timeInterval 10 target self selector selector self
  • Compojure 路由丢失参数信息

    My code defn json response data status status or status 200 headers Content Type application json body json generate str