64得票3回答
如何在Clojure中停止Jetty服务器?

我正在使用ring和clojure编写Web应用程序。我正在使用jetty适配器作为开发服务器,使用emacs / SLIME作为IDE。虽然wrap-reload确实有帮助,但run-jetty会阻塞我的slime会话,我想随时能够启动/停止它,而不必在单独的终端会话中运行它。理想情况下,我...

42得票6回答
使用不同中间件的Compojure路由

我正在使用Compojure(和Ring及相关中间件)编写Clojure API。 我试图根据路由应用不同的身份验证代码。请考虑以下代码:(defroutes public-routes (GET "/public-endpoint" [] ("PUBLIC ENDPOINT"))) ...

37得票1回答
我能否使用http-kit和core.async创建完全非阻塞的后端应用程序?

我想知道是否可能使用http-kit组合一个完全非阻塞的Clojure后端Web应用程序。 (实际上,任何兼容Ring的http服务器都可以,我提到http-kit是因为它声称具有事件驱动的、非阻塞模型)。 编辑:简述 这个问题是我对非阻塞/异步/事件驱动系统本质的一些误解的症状。如...

19得票4回答
为什么Ring中间件的顺序需要反转?

我正在为Ring编写一些中间件,但我真的很困惑,为什么我必须翻转中间件的顺序。 我找到了这篇博客文章,但它并没有解释为什么我必须反转它。 以下是博客文章的简要摘录:(def app (wrap-keyword-params (wrap-params my-handler))) 响应将是...

17得票4回答
在Clojure/Ring中,如何删除一个cookie?

假设我想要删除一个cookie(例如,Ring的会话cookie): 制作一个响应映射,如下所示:{:cookies {"ring-session" {:value "kill", :max-age 1}}} 看起来能工作,但感觉有点不太正规。 有没有一种简单的方法只是删除它?

15得票2回答
使用Ring和Compojure为应用程序和API路由提供不同的中间件服务

我有一个使用ring+compojure编写的应用程序,我希望能够根据路由属于Web应用程序还是基于JSON的API来应用不同的中间件。 我在Stack Overflow和其他论坛上找到了一些关于这个问题的答案,但这些答案似乎比我正在使用的解决方案更复杂。我想知道我所做的方式是否存在缺陷,以...

15得票3回答
如何在Clojure/Compojure/Ring中将地图转换为URL查询字符串?

在Clojure / Compojure中,我如何将一个map转换为URL查询字符串?{:foo 1 :bar 2 :baz 3} 到foo=1&bar=2&baz=3 在compojure中是否有任何实用方法可以做到这一点?

15得票2回答
使用ring/compojure从war包中提供静态文件服务

使用 Ring(和 lein-ring 工具)时,我可以按照文档在开发环境下从“resources”等位置提供静态文件服务。但是,当我通过 lein uberwar 将它们打包后,在容器中运行时,我不知道该如何提供这些文件的服务。我看到关于 wrap-resource 或设置 :resourc...

14得票1回答
如何在Ring项目中运行任意的启动函数?

我有一个使用compojure/ring编写的应用程序,目前是通过lein ring server运行的,我想将其编译为.war文件以便部署。我已经有了一个定义,但是就像这样: (def foo (start-scheduler)) 那会阻止编译和生成.war文件。为了避免这种情况,我考虑...

14得票3回答
将状态作为参数传递给环形处理程序?

如何在ring处理程序中最方便地注入状态(而不使用全局变量)?以下是一个示例:(defroutes main-routes (GET "/api/fu" [] (rest-of-the-app the-state))) (def app (-> (handler/api mai...