问题标签 [koa-router]

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 投票
2 回答
2324 浏览

koa - 带有 koa2 的 REST API。多个路由器的公共前缀

我有两个实体,用户和员工。所以我想在不同的端点上都使用 CRUD,但它们都将安装在“api”下,所以我可以定义 api_v1、api_v2 等等。端点将类似于:

我的两条路线都无法获得“api”前缀。无法让它与 koa-mount 一起使用。

我的文件:

服务器.js

users.js (employees.js 也一样)

0 投票
1 回答
267 浏览

mongoose - 猫鼬 findbyId 内部错误

我正在使用 Koa 2 和 koa-router。

路由器文件:

如果我转到 url http://localhost:3000/api/users/得到结果是好的:

但是,如果我在浏览器中执行 get by idhttp://localhost:3000/api/users/56bc57c48cc9e78b4ce61206 没有任何反应,也没有错误。浏览器只是加载我之前的网页。

如果我将 id 更改为一个不存在的 id,我会在浏览器中收到内部错误。它在终端中显示:

0 投票
2 回答
1902 浏览

javascript - 如何跳过或跳转中间件?(节点)

给定两个中间件,你怎么能先添加一些会被命中的东西,然后确定将请求传递到哪个中间件。该请求只能被丢弃或转发到其中一个中间件,而不能同时发送。


更具体地说:
我有一个主页/,它应该有一个可变的响应,具体取决于用户是否登录(在此处使用基于令牌的身份验证)。为简单起见,如果请求用户没有令牌,则public.html响应private.html带有有效令牌的请求。
现在这很容易在一个函数中实现,但我希望有分离的路由器,这样可以使代码更易于管理。
所以我需要以某种方式能够选择请求发送到哪个中间件路由器?不知道该怎么做。

0 投票
1 回答
93 浏览

get - 如何在 koa 中处理 GET 数据

我是 koa 的新手,我正在使用 koa-router。对我来说,代码是这样的:

然后我访问 localhost:3000/user/test?p=1&q=2,我只是发现我似乎没有办法获得 p 和 q 的值。那么如何快速获得价值呢?

0 投票
0 回答
144 浏览

javascript - Koa路由器。需要留在页面上。阿贾克斯?如何?

路由器的代码块如下:

我需要在保持在同一页面上(不重新加载页面)的同时通过发布请求向数据库发送一些数据。如果我使用“this.body ...”行,页面会重新加载。不使用它会显示“未找到”(这是合乎逻辑的)。如何执行 AJAX 之类的操作,以便将数据异步发送到 DB 而不是重新加载页面?

0 投票
1 回答
3467 浏览

javascript - 使用 supertest 测试 koa 路由时,内容类型标头始终相同

我有一个使用koa和构建的应用程序koa-router。当supertest我遇到问题测试路由时,该content-type响应标头始终为application/json; charset=utf-8.

测试如何失败:

错误:预期为“image/png”的“Content-Type”,在 Test._assertFunction 的 Test._assertHeader (node_modules/supertest/lib/test.js:215:12) 处得到“application/json; charset=utf-8” (node_modules/supertest/lib/test.js:247:11) 在 Test.assert (node_modules/supertest/lib/test.js:148:18) 在 Server.assert (node_modules/supertest/lib/test.js:127 :12) 在 emitCloseNT (net.js:1525:8)

通过以下方式记录的内容console.log(res.res.headers)

但是,如果我从浏览器向提供的路由发出请求,则content-type标头会正确更改:

既不this.set('Content-Type', 'image/png');也不 this.set('content-type', 'image/png');改变情况。

它是一个错误吗?有没有人遇到过同样的问题?

0 投票
1 回答
161 浏览

koa - 如何创建带有数字的 KOA 路径?

我有一个 KOA 端点。我有一个quantify只能接受数字的参数,如何直接在 KOA 路由器中强制执行?

0 投票
1 回答
131 浏览

regex - 如何管理有或没有 URL 的 URL?和 /

在我的 Koa 应用程序中,我有这种路由器:

我的问题是:

  • mydomain.com
  • mydomain.com/
  • mydomain.com?

由同一路线路由。它可能很棒,但对于谷歌来说却不是。说它是重复的内容。所以我想将第一个和第三个重定向到第二个。就像这样:

尝试了一些正则表达式但没有成功。已经打开了 Github 问题但也没有答案:https ://github.com/alexmingoia/koa-router/issues/251 。

在此先感谢您的帮助 :)

0 投票
1 回答
401 浏览

node.js - 如何在 Promise 中设置 body?

在下面的代码中,我希望以某种方式更改的注释部分应该能够设置文档的正文而不是“this.body = 'test';” (它仍然应该是 Promise 解决方案)。

问题是 Promise 中的“this”不是指“正确的”。

0 投票
1 回答
1348 浏览

javascript - 使用 koa2 和 koa-router 获取 204 用于 REST api - 响应正文未通过

我来自 Express 并试图为我正在从事的一个新项目学习 Koa2,但我正在努力让最基本的 Get 操作为我的应用程序工作。

在服务器端,我有一个访问授权服务器 (Etrade) 的路由设置,它返回一个 HTML 链接,用户需要使用该链接来授权应用程序。

我可以使用 Postman 访问路由,并看到我通过调用从 Etrade 获得了链接console.log(),但它没有在响应正文中返回给 Postman。

当我将它连接到客户端应用程序时,我得到一个响应状态代码 204,这意味着如果我正确理解的话,我的响应正文是空的。

我需要弄清楚如何让响应体传递以及提高我对 Koa2 的理解。

我目前的设置server.js如下:

router.js的设置如下:

最后是路线的逻辑,减去关键和秘密的东西:

感谢您的帮助和指导!