问题标签 [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 回答
671 浏览

clojure - 使用 compojure 解析来自多个复选框的值

我创建了小型组合 Web 应用程序,它可以使用提供的 URL 显示从其他网站获取的多个值。目前,这个 URL 被硬编码在我的一个函数中,现在我想添加基于文本字段和复选框中的值的动态 URL 创建功能。

这是我的页面的样子:

以下是路线:

目前,我需要(create-url)函数帮助(返回一个字符串),我想在其中获取所有字段,对于我的搜索是必需的(一个文本字段和 3 个复选框),并从中解析值,这些值将被输入(连接) URL - 对于复选框,如果选中,则检查部分的值将是 1,而不是 0,否则保持 0(如果选中了两个复选框,则检查 = 100,或 010、011)。如果是文本字段,则 tfield=userinputtext。

编辑我花了很多时间作为 .Net 和 Java 开发人员,而这部分组合对我来说完全是个谜。这就是我想用(create-url)函数实现的(用 OO 风格编写的伪代码):

我为这个伪代码的样子道歉,但这是我想学习的部分:如何从表单中获取数据并解析它(在这种情况下,我想将表单字段中的值附加到字符串中)

谁能帮我这个?

0 投票
6 回答
9807 浏览

clojure - 使用不同的中间件组合路由

我目前正在使用 Compojure(以及 Ring 和相关中间件)在 Clojure 中编写 API。

我正在尝试根据路由应用不同的身份验证代码。考虑以下代码:

这不能按预期工作,因为wrap-basic-authentication确实包装了路由,因此无论包装的路由如何,它都会被尝试。具体来说,如果请求需要被路由到admin-routes,user-auth?仍然会被尝试(并且失败)。

我求助于在公共基本路径context根植一些路由,但这是一个相当大的限制(下面的代码可能不起作用,它只是为了说明这个想法):

我想知道我是否遗漏了某些东西,或者是否有任何方法可以在不受限制且不使用通用基本路径的情况下实现我想要defroutes的(理想情况下,不会有)。

0 投票
1 回答
179 浏览

clojure - 运行多个黑色服务器时的加载视图

我正在尝试使用 noir 来启动三台服务器(每台服务器处理应用程序的不同方面)。我正在尝试这样做,以便我可以在一个应用程序中运行所有三台服务器,同时开发并轻松地将项目解耦为三个不同的应用程序进行部署。

使用noir.server/startnoir.server/stop运行我需要的码头服务器是没有问题的。

我想弄清楚的是某种方式来调用load-views(或类似的东西),为每个服务器设置不同的视图,以便 URI 冲突由正确的defpage.

0 投票
1 回答
496 浏览

clojure - 使用相对链接和非根上下文路径将 Clojure webapps 部署到 Jetty 时链接断开

我一直在尝试用 Clojure 编写 webapps,直到现在还很容易。我按照 Chas Emerick 的出色截屏视频开始 clojure,并快速启动并运行了一个 url 缩短器。接下来我希望能够部署它,这就是麻烦开始的时候。

当我在开发中运行它或将它作为根 webapp 部署到 Jetty 时,一切都很好,但是当我使用上下文路径部署它时,它就不行了。或者,更确切地说,它几乎可以工作。我所有的 Compojure 路由仍然有效,但FORMHTML 文件中的操作链接已损坏并给我 404。

这是 Compojure 路由设置:

这是主页模板的 HTML:

问题是action="shorten"网址。当使用上下文路径部署到 Jetty 时/example一切正常,直到我触发表单提交。然后 Jetty 抱怨它找不到localhost:8080/shorten哪个意味着(我认为)它没有被视为相对路径,而是绝对路径。

所以,我的问题是:如何解决这个问题?我想我可以只在操作链接中指定完整路径,但这会很不灵活,并且会使开发中的 servlet 更难运行。有没有办法配置我的出路?或者一些神奇的 URL 前缀(比如~/在 Razor 中)会做正确的事情?

0 投票
2 回答
1309 浏览

clojure - Clojure:Webbit + Ring

语境

我刚刚得到http://blog.jayfields.com/2011/02/clojure-web-socket-introduction.html工作。

我也有 ring + compojure 工作。

问题:

我想使用 ring ... 以某种方式 ... 与 webbit 这可能吗?

谢谢!

0 投票
2 回答
1459 浏览

clojure - 部署后在 ring/compjure 应用程序启动时执行功能

可能重复:
如何在环项目中运行任意启动功能?

我正在使用带有 compojure 的 clojure ring 中间件来构建一个简单的 api。我经常将应用程序部署为战争。

这很好用,但我正在寻找在应用程序启动时运行一次性初始化代码的方法。当我运行“lein ring server”时,它运行得很好——但是,当部署为战争时,它似乎只在第一个请求到达服务器时运行(即懒惰)。有没有办法让它不懒惰(不使用 AOT) - 或者有没有更好的方法来挂钩环中间件生命周期?

0 投票
1 回答
682 浏览

clojure - 具有多个参数的组合路由

是否可以定义包含多个参数的复合路由?

IE:

0 投票
2 回答
2011 浏览

clojure - 在 Clojure 中验证复合请求时从字符串中解析整数

我有基于 compojure 的应用程序,我需要在其中解析请求并检索可以是数字的参数。我希望能够在实际处理请求之前验证参数是否存在并且它们是数字。这是我到目前为止所拥有的:

有没有更好的方法来进行字符串 -> 数字转换?

有没有更好的方法来进行请求验证?

0 投票
2 回答
356 浏览

model-view-controller - 无法让 defroutes 在 webnoir 中工作

所以,我是一个 clojure n00b,当我试图为我正在构建的项目获取路线时,我错过了一些东西。

我在循环依赖方面遇到了一些问题,在使用 Django 之后,我认为将路由全部定义在一个地方要好得多,而不是像使用defpage.

上代码:

这是我的core.clj文件:

然后在我的路线文件中,我有以下内容:

一切都是404'ing,我什至不知道从这里去哪里。我可以使用该站点defpage,但随着路由数量的增加,它看起来很丑陋且不可扩展。

所以

  • 我在这里做错了什么?对底层组合/clojure/ring 层的任何洞察都会很棒
  • 如果这不是定义路线的最佳方式,那是什么?
  • github上有大型clj-noir网站的好例子吗?(我的 google-fu 让我失望了。)
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}))