问题标签 [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.
google-app-engine - 你用 Clojure 做 GAE 应用程序的方法是什么?
我想在 GAE 上使用 Clojure 和 Compojure 开发应用程序,使用 Eclipse 或 Idea,emacs 不是一个坏主意:P
那么哪些是最好的方法呢?我不认为我想使用 leiningen,因为我相信如果你通过学习曲线,maven 会非常强大 - 我读了这个博客http://compojureongae.posterous.com/tag/googleappengine '到目前为止是一个的最佳信息来源。
如果你必须这样做,你的方法是什么?或者你会推荐我什么?
这个插件 - > http://code.google.com/p/maven-gae-plugin/好吗?因为如果我使用那个插件,我可以在 pom.xml 中包含 clojure.jar,基本上我已经准备好了,对吧?IntelliJ IDEA 有类似的东西吗?
还有其他建议吗?你的方法是什么?
clojure - compojure 路线背后的“大创意”是什么?
我是 Clojure 的新手,一直在使用 Compojure 编写一个基本的 Web 应用程序。不过,我在 Compojure 的语法上碰壁了defroutes
,我认为我需要了解这一切背后的“如何”和“为什么”。
看起来像 Ring 风格的应用程序以 HTTP 请求映射开始,然后只是将请求通过一系列中间件函数传递,直到它转换为响应映射,然后再发送回浏览器。这种风格对开发人员来说似乎太“低级”了,因此需要像 Compojure 这样的工具。我可以看到在其他软件生态系统中也需要更多抽象,尤其是 Python 的 WSGI。
问题是我不理解 Compojure 的方法。让我们采用以下defroutes
S 表达式:
我知道理解所有这些的关键在于一些宏巫术,但我并不完全理解宏(还)。我已经盯着defroutes
源头很久了,但就是不明白!这里发生了什么?了解“大创意”可能会帮助我回答这些具体问题:
- 如何从路由函数(例如
workbench
函数)中访问 Ring 环境?例如,假设我想访问 HTTP_ACCEPT 标头或请求/中间件的其他部分? - 解构 (
{form-params :form-params}
) 是怎么回事?解构时可以使用哪些关键字?
我真的很喜欢 Clojure,但我很难过!
html - 在打嗝中更改 div 颜色
有没有办法可以在打嗝中设置 div 背景颜色?到目前为止,这是我尝试过的,但没有结果:
[:div {:background-color "#003366"} (escape-html rest)]
在 html 中,我看到<div background-color="#663366">
了我认为不正确的颜色格式。
有没有办法在打嗝时做到这一点?
google-app-engine - 来自 Google App Engine 的 http 请求
我正在尝试从我的 Google App Engine webapp 发出 http 请求,并发现我必须使用 URLConnection 因为它是唯一列入白名单的类。对应的Clojure库是clojure.contrib.http.agent,我的代码如下:
这在我的开发环境中运行良好 - 浏览器显示 example.com 的文本。但是当我用谷歌的开发应用服务器测试它时:
它只是在我加载页面时挂起。没有错误,或任何东西。知道会发生什么吗?
clojure - 您如何使用 Compojure/Ring 会话?
我正在使用 Compojure 开发一个 Web 应用程序,我非常感谢一个存储和检索会话数据的小而完整的示例。
非常感谢,詹姆斯。
clojure - Compojure 绑定来自 URL 的 HTTP 请求参数,而不是来自 POST 表单
Compojure 不绑定 POST 表单中的字段。这是我的路线定义:
当我发布一个包含字段的表单时,我得到|{}|,即没有参数。顺便说一句,当我去http://localhost/query?param1=value1时, params 不为空,并且值会打印在服务器控制台上。
表单字段是否有另一个绑定?
clojure - Compojure 路由问题
我有一个小的 compojure 站点,其路由定义如下:
当我尝试加载项目时,出现此错误:
java.lang.Exception: Unsupported binding form: (or (serve-file (params :*)) :next)
我究竟做错了什么?我从互联网上分散的示例中获取了大部分内容。
添加空向量后,我收到此错误:
java.lang.Exception: Unable to resolve symbol: serve-file in this context
clojure - MYOB ODBC 驱动程序使用 Compojure 将工作目录更改为临时目录
我编写了一个小的内部 web 应用程序,用于将发票从我们的工作卡数据库导入到 MYOB。我使用 Clojure 和 Compojure 编写了它,它实际上工作得很好,这对我来说也是一个很好的学习练习。
但是,我遇到了一个问题,似乎在成功导入发票后,码头服务器将不再提供静态 CSS 文件。
默认路由如下:
(该文件只是 css/default.css,它在第一次导入之前完美运行。)
现在我想我找到了问题所在,似乎 MYOB ODBC 驱动程序正在更改 Jetty 服务器(和我的 REPL)的工作目录,因为当我在 REPL 中输入以下内容时:
我得到了我的临时文件目录的列表,这可以解释为什么我的 CSS 文件不再被找到。
奇怪的是,如果我这样做:
我得到了我的应用程序的正确目录。
有没有人知道可以绕过 MYOB ODBC 驱动程序的这个怪癖的东西(除了在绝对路径中编码)?
我猜我可以在启动时抓取并存储绝对路径,但这适用于 uberjar 吗?
编辑:由于 JVM 的限制,似乎无法修复?
clojure - 使用 compojure 从数据库中提供二进制文件
我有以下路线定义:
在这个例子中,请求/
就像一个魅力,并返回预期的Hello World 2
。
get-images-response 方法定义如下:
我得到了一个 404,所以二进制文件的服务还不能很好地工作。任何想法为什么?
编辑:好的,这个问题与请求图像的事实有关/images/name.jpg
。一旦我删除.jpg
处理程序就会被调用。所以问题变成了我如何匹配除了扩展名之外的任何东西?
clojure - 为从 nginx 反向代理转发的请求添加唯一 id
我们将 nginx 作为反向代理运行,它将请求转发到运行 Compojure 的 Clojure 应用程序,Compojure 是一个包装 Jetty 并为我们的应用程序提供服务 Web 请求的能力的库。
我们目前捕获 nginx 和 Clojure 应用程序生成的日志(通过 log4j 到 syslog)。但是,我们无法将 nginx 日志中的条目与 Clojure 应用程序的 syslog 输出中的条目相匹配。
我们需要找到一种方法来修改上游发送到 Clojure 应用程序的请求以包含某种 ID。这可以是一个整数、UUID 等等。
你对如何最好地做到这一点有什么建议吗?
谢谢你的帮助!