问题标签 [ring]

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 回答
280 浏览

clojure - 以编程方式发布到组合 URL

有没有办法以编程方式访问路由(无需通过 http 调用)。

例如: (defroutes main-routes (POST "/query" "OK..."))

我可以调用 defroutes 宏生成的“查询”函数吗?

0 投票
3 回答
2562 浏览

jar - 如何使用环服务器构建 clojure 应用程序

我得到了带有环库的 clojure 项目。这是 project.clj:

在开发环境中,我使用 2 个命令运行它: lein run server lein ring server 并且它可以工作。

对于生产环境,我想最小化依赖关系并将其构建到独立的 jar 中:

如何构建它并从一个 jar 文件运行两台服务器?

0 投票
1 回答
331 浏览

clojure - Compojure 应用程序无法与 with-redefs 配合使用

我正在编写一个 Compojure 应用程序并使用clj-webdriver它来进行图形测试。我试图用来with-redefs模拟从持久性中提取数据以仅返回预设值的函数,但它忽略了我的函数覆盖。我知道with-redefs在 vars 方面有效,但它仍然不起作用:

project.clj 相关部分:

处理程序.clj:

日志控制器.clj:

持久性.clj

最后,我的图形测试 - 它试图覆盖mikes-log并失败:

Whereone-week-snippet是一个返回一些样本数据的函数。(defn start-server [] (run-jetty (var app) {:port 3000 :join?false}))

0 投票
1 回答
80 浏览

clojure - 为什么 ring 在此响应中给我错误?

下面是我的应用程序 -

我在这条路线上遇到错误 -

如果我直接评估上述路线,它可以正常工作并返回 html 文件 -

如果我也将路由更改为直接调用模板函数,那么它也可以工作 -

任何想法出了什么问题?

0 投票
1 回答
1954 浏览

clojure - ring 在哪里获取表单的 wrap-params 信息?

我正在尝试更深入地研究 ring 并使用以下代码来查看请求映射中发生了什么:


当我想查看get请求图上的查询数据时,它就在那里。假设我在http://localhost:8099/api/tasks/remove?hello=3浏览器中输入,响应看起来像这样:

您可以看到“hello=3”在查询字符串中。


但是对于post,响应有 :content-type "application/x-www-form-urlencoded",整个响应看起来像下面这个例子,我没有看到任何表单参数:


我的问题分为两部分:

  1. 提交表单时 ring 或 jetty 到底在做什么?
  2. 如果我正在尝试编写自己的handler代码来处理表单数据,那么我如何访问表单查询参数的简化代码框架是什么?

我已经将这个函数的“魔力”隔离在params.clj

特别是这一行:

(parse-params (slurp body :encoding encoding) encoding)

但我不确定它在做什么。

0 投票
1 回答
803 浏览

clojure - 如何停止使用 ring.util.serve 启动的环服务器

我正在使用 repl 中启动我的服务器

一旦开始使用它,我如何停止服务器。

谢谢,穆尔塔萨

0 投票
1 回答
1428 浏览

java - 如果 start() 出现异常,则终止 Jetty 服务器线程池

我正在 Clojure 中编写一个嵌入式 Jetty 应用程序,并将以下内容作为主要命名空间:

这工作正常 - 我希望能够通过 REPL 启动和停止,以及从运行 JAR 的控制台启动和启动(尽管如果有更好的 Clojure-Ring-Jetty 程序的启动/停止模式,我很想知道)。问题是如果我跑

或者

并且 jetty/run-jetty 抛出了一个异常(它包含了一个 Server.start() 调用)——例如,在我的 MacBook Pro 上,如果我尝试在端口 80 上启动 Jetty 服务器,它会出错——Clojure 程序不会不要退出。但是,异常是在线程“main”中。那么程序为什么不退出呢?我唯一能想到的是 Jetty 有线程浮动。但是 start() 失败了!!!那么这些线程(池)在做什么?

这是 Java 的东西、Clojure 的东西、Leiningen 的东西、Jetty 的东西还是 Ring 的东西?

编辑:

这是堆栈跟踪:

0 投票
1 回答
584 浏览

clojure - 如何在不重新启动的情况下使用 enlive 时重新加载模板

我正在使用 enlive 进行 Web 开发。我使用 repl 启动我的环服务器(serve my-app/handler)

但是,当我对我的任何 html 模板进行更改时,我必须重新启动我的 repl 才能显示更改。如何在不重新启动 repl 的情况下重新加载我的标记?

谢谢,穆尔塔萨

0 投票
1 回答
744 浏览

clojure - 如何使用 jetty/ring 向 ipad 提供视频文件

我已经建立了一个带有文件服务器的简单环服务器

我有test.mp4video.htmlresources/public目录中。


video.html引用 mp4 文件:


http://server-ip-address:8890/video.html当我在 safari、firefox 中打开时,它工作正常

但是,当我在 ipad 上打开它时,它没有.. 而是显示一个黑色的不能播放矩形。


当我将相同的文件放入 apache 服务器并在 ipad 上打开 video.html 时,视频播放完美....

到底是怎么回事?

0 投票
1 回答
266 浏览

clojure - 如何托管 CGI 应用程序?

到目前为止,我已经测试了 hunchentoot-cgi(CL)、maytpd2(Haskell)、ocsigen(OCaml)、yaws(erlang) 来托管旧的 python CGI 应用程序。除了hunchentoot-cgi,一切都很好。我喜欢 Lisp 风格的编程,所以我真的很想将应用程序托管在 Lisp 风格的 Web 服务器中。

在erlang中,我只需要如下配置它:

然后 python CGI 应用程序可以工作。

Noir/Ring怎么样?