问题标签 [reitit]

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

clojure - 如何使用 Reitit 在 Clojure 中设置中间件以启用对正文参数的强制?

我正在尝试设置一个执行强制的 Reitit 路由器。我可以让响应部分正常工作,但我似乎无法让身体强制正常工作。以下是我正在使用的代码:

即使我发送正确的正文参数并出现以下错误,强制也会失败:

这似乎表明强制无法找到任何身体参数。我认为这与我设置中间件的方式有关,但我似乎无法解决这个问题。我应该如何设置中间件,以便 Reitit 强制在这种情况下正常工作?

0 投票
1 回答
980 浏览

clojure - 如何从 Reitit 后端路由中提取路径参数

如何从 Reitit 后端 Clojure 路由中获取路径参数?我正在尝试通过:id以下方式获取与关联的 val,但在 REPL 中不断收到 404 file not found 错误。

我尝试使用https://luminusweb.com/docs/routes.htmlhttps://github.com/metosin/reitit/blob/master/README.md上的文档。

0 投票
1 回答
841 浏览

authentication - 如何让 Swagger UI 让我提供身份验证标头?

我使用 Luminus,连同 reitit 和 swagger-ui 来生成一个页面,让我试用我的 Luminus API。我可以输入我的 API 请求正文并提交以测试我的 API。 我的招摇 UI 的快照 现在我已经使用好友添加了身份验证,并且我的 API 需要在请求的标头中传递一个令牌,否则它会拒绝该请求,因为它是被禁止的。
我试图让“授权”标题字段神奇地出现在我的 UI 中,以便我可以输入 JWT 令牌字符串并测试我的 API。对于使用 reitit 创建 API 的任何人来说,这一定是一个非常普遍的要求,但我不知道该怎么做。我四处寻找,发现了这个 reitit 问题页面,其中包括文本......

标头参数被声明为小写字符串 {:headers {"authorization" string?}},这将与 Ring 提供给我们的完全匹配。(仍然可以使用 HTTP-Header-Case 获取文档。)

...并建议以下设置...

这样做并没有让我通过任何方式进行身份验证。所以,我找到了这个讨论并通过在上述路线中添加以下内容来编辑我的路线:summary 和 :parameters...

添加之后,我得到了这个...... 在此处输入图像描述

...看起来我在正确的轨道上,但我仍然无法在 auth 标头中输入我的令牌。

正如我所说,一切都在使用 curl ......只是那个招摇并没有显示任何添加身份验证头的方法。有人知道如何让 Swagger UI 在这种情况下发挥作用吗?

如果 reitit 不支持这一点,那么人们如何使用 Swagger UI 来处理经过身份验证的请求?

任何帮助,将不胜感激!

0 投票
1 回答
256 浏览

url-routing - 为什么我的 Reitit 路线需要英镑符号?

我一直在使用 ClojureScript 制作个人网站,并决定使用 Reitit 作为我的路由库,而不是我通常的秘书。我已经阅读了关于 Reitit 的非常好的东西,并且它有点工作,但只有当我导航到其中包含“#”的路径时它才会做出反应。

示例:我希望能够访问“website.com/posts”,但它仅在我访问“website.com/#/posts”时识别

我的 routes.cljs 几乎是他们重新构建示例的副本:

我的 events.cljs 也遵循他们的例子:

在我的views.cljs中,我有一些逻辑可以根据字典条目更改显示的页面:page

路由类型的作品,所以我现在可以推进我的网站,但我希望最终产品在导航时在 URL 中没有“#”。

我错过了什么?Web 开发对我来说仍然很新,所以非常欢迎所有建议。

0 投票
0 回答
143 浏览

clojurescript - Reitit 在浏览器中直接导航到时无法识别路线

我正在尝试定义一些要在我的网站上使用的路线。我将它们定义如下:

这应该为我在博客文件中定义的博客文章动态创建路由。当我从其中一个开始localhost:8280/localhost:8280/posts单击导航到的帖子链接localhost:8280/posts/blank(博客帖子模板页面)时,它的效果很好。如果我正在查看帖子 ( /posts/blank) 并刷新页面,它会打开一个空白屏幕并且似乎没有加载任何已编译的 javascript。如果我重新加载/或者/posts它按预期工作并允许我继续浏览。

我有两个关于 Reitit 的问题,我将非常感谢您的帮助:

  1. 为什么会发生这种情况,我可以在路线设置中进行哪些更改来解决此问题?
  2. 我目前只能导航到/posts而不是/posts/,我如何才能/在最后注册带有额外内容的路线?如果我尝试定义两个具有相同名称的路由,Reitit 不允许这样做。
0 投票
1 回答
229 浏览

namespaces - 使用命名空间中未声明的 var,但该 var 存在

我在 myapp.core (core.cljs) 中有这个 def:

在 myapp.events (events.cljs) 中,我像这样使用它:

但我得到了错误:

为什么会这样?

0 投票
1 回答
482 浏览

clojurescript - 如何在 Reagent 中编辑 Reitit 路由?

使用默认试剂模板创建的路由如下所示:

如果我将其中一个的路径更改为(下面的“/about”为“/test”),为什么它不再起作用?必须有其他东西在驱动路由,但我似乎无法弄清楚是什么。

无效回复

这是默认的试剂模板(lein new reagent...),我没有更改代码中的任何其他内容。任何帮助将不胜感激。

编辑 - 我在这个函数的 repl 中稍微介绍了一些额外的细节(来自默认模板):

在我看来一切都很好。事实上,在 repl 中执行以下步骤成功地将浏览器导航到正确的页面。我仍然无法直接输入网址。

0 投票
1 回答
243 浏览

clojure - 如何在 Reitit 中将原始标头参数设置为强制?

我有一个带有 Pedestal 和 Reitit 的 Clojure 应用程序,并且我需要 origin 标头参数是强制性的。

但是如果我输入我的模式,请求会引发异常。

例外:

:errors {:origin missing-required-key}

要求

CURL 请求有效,问题仅在使用 GET 方法的 Swagger UI 中。

似乎 Swagger for get 方法不会发送原始标头参数以避免 cors 的攻击。

我可以解决这个问题吗?

谢谢你的帮助

0 投票
0 回答
93 浏览

clojure - 如何在 compojure-api 中为 Swagger 实现中间件,以将模式从 kabab-case 转换为 camelCase

应用程序对模式使用 kabab-case 键格式,如下所示

但是对于招摇的文档,我想要camelCase中的模式,如下所示

有没有办法为 swagger 实现中间件,以便我可以将模式从 kabab-case 转换为 camelCase?请建议我怎样才能做到这一点。

我当前的代码如下所示,用于为 api 生成动态 swagger 文档

我正在使用 compojure-api 提供的 swagger 进行路由。

我们可以使用reitit实现我的要求,还有一个示例项目rest-api 使用 reitit如何实现这一点。但是我想使用 compojure-api 实现类似的事情,因为我现在不想升级到新的路由库。

0 投票
0 回答
52 浏览

clojure - Where do you pass the :ignore-missing-mapping? keyword in reitit swagger to ignore unconvertable schemas?

I've been following the ring-swagger server.clj example to set my own http server but with prismatic/schema coercion.

Everything works just fine when my leafs are of basic type such as s/Str or s/Int, but I can't get it to work with (s/pred pos-int?) for example.

Every time I try to get the server's swagger API page, an error is thrown:

I understand I should be using the :ignore-missing-mapping? true setting from the ring-swagger documentation but I have no idea where do I pass that.

I'm using reitit v0.5.12, and I see that inside reitit-schema, the settings I pass from my router definition are not passed to the schema-tools ns functions when I pass the :coercion reitit.coercion.schema/coercion coercion: https://github.com/metosin/reitit/blob/master/modules/reitit-schema/src/reitit/coercion/schema.cljc#L52

I'm not sure how can I setup a prismatic-schema to work with swagger, besides constricting myself to only use plain schemas leafs such as s/Int, s/Str, etc.