问题标签 [compojure-api]

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

clojure - Compojure-api:请求强制通过 multipart-params 提供的地图

我正在尝试将 compojure-api(版本 1.1.12)集成到现有的基于 compojure 的应用程序中。虽然大多数事情都有效,但我在现有 REST 调用上的请求强制存在问题,此时其用法很难更改。

  • 这是一个帖子
  • 它期望通过 multipart/form-data 参数
  • 大多数参数是可选的。
  • 大多数参数都很简单:字符串或字符串数​​组。
  • 一个可选参数应为 JSON 编码的地图。

我这样定义路线:

这有效,除非我尝试传递other-parameters请求。例如,通过 curl:

这会导致内容无效请求(即状态 400)错误:

我正在使用 ring-default's site-defaults,并且我没有修改 compojure api 的默认强制。我已将错误追踪到compojure.api.coerce/coerce. 我可以看到强制器正在处理的值,它看起来像:

在 coerce.clj 的第 59 行,(coerce value)返回一个错误 (per schema.utils/error?)。

那么,是否不可能将 JSON 编码的多部分参数强制转换为 Clojure 映射?我可以将参数定义为字符串而不是映射,并自己进行解析,但这违背了使用 compojure-api 和 ring-swagger 的目的。

0 投票
1 回答
296 浏览

clojure - Compojure & Ring 中间件总是返回 404

我正在尝试在使用 compojure 和 ring 的 luminus 项目中设置一个简单的中间件。我确定我遗漏了一些简单的东西,但是我设置了一个简单的中间件进行测试,但没有得到我期望的结果。

我希望这会返回 401,但它会一直返回 404。如果我更改 if 表达式 (= 2 3),路由会正确触发。作为参考,这是路由,它是 luminus 添加中间件后生成的默认路由之一。

0 投票
1 回答
1197 浏览

clojure - lein ring uberjar -- java.lang.NoClassDefFoundError: clojure/lang/Var

不确定为什么当我lein with-profile +live ring uberjarjava -jar我的 uberjar 时,我得到这个异常:java.lang.NoClassDefFoundError: clojure/lang/Var.

project.clj

有任何想法吗?

0 投票
0 回答
273 浏览

asynchronous - 异步 Compojure-Api 中间件不工作

我的中间件仅针对异步请求引发错误,不知道为什么:

项目.clj

处理程序.clj

为了让讨论和诊断更容易,我使用了这个问题的最低限度版本lein new compojure-api template

(handler request)中间件是引发错误的原因,仅适用于异步请求:

如何使用 async compojure-api 做中间件?感觉就像我完全不知道如何实现这一点。

0 投票
1 回答
731 浏览

api - 如何将 CORS 添加到 compojure-api 应用程序?

如何将 CORS 添加到此代码段?

我想使用https://github.com/r0man/ring-cors并尝试过这个,但它似乎没有做任何事情。我希望看到响应标头包含 Access-Control-Allow-Origin 但它丢失了。

0 投票
2 回答
546 浏览

clojure - 如何设置路径参数的默认值?

在下面的示例中,如何为路径参数 item-id 设置默认值?

0 投票
1 回答
166 浏览

clojure - 如果使用异常处理程序不能执行中间件?

当对我的 api 端点有错误请求时, wrap-cors不会返回访问控制标头。我相信这是因为我使用的异常处理程序可能会阻止中间件运行。我想知道我如何仍然可以执行此路由的中间件并将 cors 标头附加到错误请求的响应中。

异常处理程序

应用程序

0 投票
1 回答
70 浏览

unit-testing - Exception when attempting to run Cloverage with compojure auth middleware

Cloverage is now failing after I adding role based authentication to my compojure api. Whilst running lein cloverage I get this exception:

Here is my auth middleware:

0 投票
1 回答
528 浏览

clojure - 如何使中间件仅在`:swagger {:deprecated true}`时放置响应标头?

我们使用 compojure-api 在我们的环应用程序中获得一些不错的招摇集成。元数据的:swagger {:deprecated true}作用就像是让 swagger 页面正确的冠军,但我有一个要求,当路由是:swagger {:deprecated true}. 我正在努力弄清楚如何使用我一直用来进行类似响应标头操作的中间件模式来做到这一点。

如何修改为仅在带有 的路线上wrap-bob-response-header发射?x-bob:swagger {:deprecated true}

0 投票
1 回答
77 浏览

clojure - 如何使用发布的数据生成 html 页面并创建页面访问的 url?

我对 Clojure-Compojure API 开发非常陌生。我有一个要求,我需要为我的 api 的每个帖子创建一个静态 html 页面,用包含样式的已发布正文填充内容,并且必须生成一个指向该静态 html 页面的 url。

这不是一个 Web 开发项目,而是作为 api 开发的一部分的要求。必须存储生成的页面,并且必须创建 url 以指向该页面。

我正在使用 Clojure Compojure api 模板。