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 路由丢失参数信息 的相关文章

  • 改造中如何使用HashMap发布数据?

    您能解释一下如何使用以下方式发布数据吗hashmap in 改造2 这就是我发的帖子 FormUrlEncoded POST getProfile Call
  • Clojure 中没有整数溢出?

    我在阅读时在 IntelliJ IDEA 中运行 Clojure 1 3 0 和 La ClojureClojure 的乐趣 在第 4 1 3 节 第 64 页 中 作者使用以下代码演示了整数溢出 Integer MAX VALUE Int
  • 如何使用clojure中的map函数打印哈希映射列表的每个元素?

    我正在构建一个哈希映射列表 然后将其传递给另一个函数 当我尝试使用打印列表中的每个哈希映射时map它不工作 我可以打印完整列表或获取第一个元素等 defn m a println a map println a 以下仅适用于 repl m
  • OAuth2:查询字符串与片段

    刚刚注意到 在 OAuth2 中 当请求的授权类型为 code 时 回调将其包含在查询字符串参数中 在 之后 但是 当授权是 令牌 时 它会作为片段传递 在 之后 这看起来是规范的一部分 https datatracker ietf org
  • 我可以使用 jQuery 执行 $_GET 方法/查看文件的 url [重复]

    这个问题在这里已经有答案了 可能的重复 在 JavaScript 中获取查询字符串值 https stackoverflow com questions 901115 get query string values in javascrip
  • Node.js :带有多个查询参数的 Express app.get

    我想查询 yelp api 并有以下路线 app get yelp term term location location yelp listPlaces 当我发出 GET 请求时 http localhost 3000 yelp term
  • 为什么这个 Clojure 程序在可变数组上运行如此慢?

    剧透警告 这是 代码降临 第六天的第一部分 我试图解决this http adventofcode com day 6Clojure 和 Scala 中的问题 Scala 程序在我的 Macbook Air 上运行良好 几秒钟内就完成了 然
  • 使用 swank-clojure 攻击 Clojure 库的工作流程

    Clojure 库的黑客攻击有典型的工作流程吗 假设我的应用程序 Foo 依赖于第三方库 Bar 该库是从存储库获取的 并通过以下方式包含在项目 Foo 中lein deps 然后 假设我想破解 Bar 库 所以我从 github 克隆它
  • $_GET 作为 PHP 函数中的参数

    我有同样的问题 但是 我根据使用标头的 if 语句将用户重定向到通过函数构造的动态页面 为了使该函数正常工作 需要在标头的 GET 部分中传递参数 根据提供的答案 这是一种不好的做法 我应该用什么方式来做呢 function page ti
  • clojure - 不同命名空间中的评估代码

    我正在编写类似 REPL Server 的代码 用户的请求在这样的函数中评估 defn execute request str try eval read string request catch Exception e getLocali
  • 如何在 repl 中加载新的 clojure 库

    所以我有这个工作流程问题 我很高兴在我的 clojure 项目 repl 上打字 并意识到我需要另一个不在我的库中的库project clj 在这种情况下 我需要tools cli图书馆 我打开project clj在我的编辑器中添加一个条
  • AJAX .post 异步

    以下具体执行什么操作 ajax type POST async false vs ajax type POST async true 这意味着行为有什么区别 From jQuery 站点 http api jquery com jQuery
  • Memcached的get和put方法是线程安全的吗

    多线程环境下memcached中的key是否有可能出现乱码 如果是这样 如何以最短的同步时间避免它 使用Java客户端访问memcached服务器 不会 Memcache 将返回某人之前写入的值 而不是乱码 如果您获取 修改 放置 则无法保
  • 在 Clojure 中处理两个序列中的值对

    我正在尝试加入 Clojure 社区 我经常使用 Python 我广泛使用的功能之一是 zip 方法 用于迭代值对 在 Clojure 中是否有一种 聪明且简短的 方法可以实现相同的目标 另一种方法是简单地将 map 与一些按顺序收集其参数
  • Apache2 重写查询字符串转义两次

    在虚拟主机配置文件中使用此规则会导致查询参数的双重转义 RewriteEngine On RewriteCond HTTPS off RewriteRule https HTTP HOST REQUEST URI 例如 http examp
  • 将查询字符串字典(或关联数组)转换为字典[重复]

    这个问题在这里已经有答案了 我正在尝试接受以下形式的查询字符串 param key1 value1 param key2 value2 并将其转换为 C MVC 4 中的字典 这在 PHP 中很简单 但我还没有找到任何在 C 中重现此操作的
  • Clojure 中的宏和函数

    我在这个 Clojure 教程中读到了以下行 http java ociweb com mark clojure article html Macros http java ociweb com mark clojure article h
  • 未为 OPTIONS Ajax 请求设置标头

    我有一个ascx page GetToken ashx public void ProcessRequest HttpContext context context Response ContentType text plain conte
  • 获取和编辑 GET 变量以创建超链接的方法

    假设我有这样的网址somefile php sort id way desc 我想编写一个函数 或使用已经创建的函数 让我将下一个变量添加到 URL 并设置我要删除的变量 我想到了类似的事情function editGetVar add l
  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http

随机推荐

  • 通过 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