问题标签 [compojure]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
437 浏览

clojure - Compojure Routes 丢失参数信息

我的代码:

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

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

0 投票
1 回答
493 浏览

clojure - clojure/compojure/打嗝 NullPointerException

我拥有的堆栈跟踪不包含对我的代码的任何引用。我不确定如何开始找出这里可能出了什么问题:

这发生在表单提交之后——控制器将记录写入数据库并重定向到页面:

我在堆栈跟踪中看到了打嗝,但这里没有进行页面渲染。并且浏览器仍然指向原始页面,而不是重定向页面,所以我认为重定向永远不会发生。

想法?

编辑:

通过一些 println,我将其追踪到模型/创建调用,该调用正在调用 clojureql 到 conj!新纪录。第一个 println 显示在控制台窗口中,第二个没有。

0 投票
2 回答
966 浏览

java - 是否可以从 ring/compojure 调用 java servlet?

我必须从 Clojure Web 应用程序调用用 Java 编写的 servlet,但我不明白该怎么做。

用 Java 开发 webapp,我必须在 web.xml 中描述所有映射。我明白了,在 Compojure 中,我必须描述路线。那么,我可以将 Java servlet 绑定到这样一个路由吗?

对不起,如果我的问题很愚蠢,但我搜索了很多并没有找到答案;我刚刚开始为网络开发。

0 投票
8 回答
11201 浏览

clojure - 在 Compojure 中默认在 / 处提供 index.html

我有一个名为的静态文件index.html,我想在有人请求时提供/. 通常 web 服务器默认会这样做,但 Compojure 不会。index.html当有人请求时,我如何让 Compojure 服务/

这是我用于静态目录的代码:

0 投票
2 回答
631 浏览

jquery - 使用 jquery 发送 json 对象,但在 compojure 中接收 nil

我正在尝试从我的javascript(使用jquery post)发送json到compojure。我确信我做错了一些简单的事情。我的 javascript 文件(完整)如下所示:

我的 clojure 服务器看起来像:

当我加载我希望得到的页面时

得到:来自 jquery 的 foo

但相反我得到

得到:来自 jquery 的 nil

到底是怎么回事?

0 投票
1 回答
1497 浏览

clojure - 按正确顺序放置 Clojure Ring 中间件

我的 Clojure 服务器中间件有问题。我的应用程序有以下要求:

  • 一些路线应该可以毫无问题地访问。其他人需要基本身份验证,所以我想要一个身份验证功能,它位于所有处理程序函数的前面,并确保请求得到验证。为此,我一直在使用 ring-basic-authentication 处理程序,尤其是有关如何分离公共和私有路由的说明。

  • 但是,我还希望在Authorization:标头中发送的参数在路由控制器中可用。为此,我一直在使用 Compojure 的site函数 in compojure.handler,它将变量放入:params请求的字典中(参见例如Missing form parameters in Compojure POST request

但是我似乎无法同时获得 401 授权参数。如果我试试这个:

授权变量可以在authenticated?函数中访问,但不能在路由中访问。

显然,这不是一个非常普遍的例子,但我觉得我真的在转动我的轮子,只是随机更改中间件顺序并希望一切正常。对于我的具体示例以及了解有关如何包装中间件以使事情正确执行的更多信息,我将不胜感激。

谢谢,凯文

0 投票
1 回答
10106 浏览

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

我正在尝试使以下任何映射都可以映射http://mysite.org/add?http://sitetoadd.comhttp://mysite.org/add?u=http://sitetoadd.com

但它只是失败了,我不知道为什么。另一方面,这有效:

但我不能使用它,因为我必须传递一个 url 并且在正常http://mysite.org/add/http://sitetoadd.com时无效http://mysite.org/add?http://sitetoadd.com is

编辑:倾销request我已经看到参数是空的。我认为它会包含 POSTGET 参数,但我可以找到传递的参数的唯一地方是:query-string ("u=asd")。似乎需要一个中间件来解析查询字符串。顺便说一句,我的问题仍然存在。

0 投票
2 回答
2497 浏览

clojure - Compojure:生产中的 lein 环?

似乎人们建议使用 lein-ring 来轻松部署 Compojure 应用程序。不就是为了发展吗?我已经对使用 lein-ring 运行的同一个应用程序与使用 uberjar 的 leiningen 打包(使用 java -jar 执行,它包含 ring-jetty)进行了基准测试。

令我惊讶的是,使用 lein-ring 的性能甚至更好!我错过了什么吗?

我怎样才能继续使用 lein-ring 但避免在出现异常时打印出堆栈跟踪并避免检查修改过的文件?

谢谢

0 投票
2 回答
15316 浏览

clojure - 使用 ring/compojure 提供静态文件 - 来自战争

使用 ring(和 lein-ring 工具)——我可以在开发中运行时根据文档从“资源”等中提供静态文件——但是——当我通过 Lien uberwar 打包东西时,我不知道如何制作它在容器中运行时提供这些文件。我在 wrap-resource 或设置 :resource-path 上看到有冲突的文档,但似乎没有一个有效。

0 投票
1 回答
976 浏览

tomcat - Compojure:访问文件系统

这是我的 project.clj 文件:

这是我的路由:

我有一些网络静态文件/resources/public,我可以访问它们。在代码中,我还需要访问文件系统上位于/resources/data和上的一些文件/resources/tpl。使用lein ringserver or lein run,以下调用工作正常

但是当使用 Tomcat 打包应用程序lein uberwar并在 Tomcat 下部署时,它失败了,我得到了 FileNotFoundException。这可能是因为 lein 的当前工作目录是项目根目录,而在 Tomcat 下它是 Tomcat 的 bin 目录。

例如,我已经/resources/data/data.dat在战争中打包了,因为/data/data.dat“resources/data/data.dat”在 Tomcat 下不起作用,或者“data/data.dat”在开发中不起作用。

顺便说一句,在 Compojure 中管理这个的正确方法是什么?谢谢。