问题标签 [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.
typescript - 一种更清洁的方式,如何重构异步调用
我有以下端点
我想知道是否有一种“更清洁”的方式来做同样的事情。即如何使用解构、速记等来重构它?
vuejs2 - 重定向后 Koa ctx.session 丢失
我有两个 Node.js 服务器应用程序。第一个在 localhost:8081 上运行 Koa.JS,而第二个在 localhost:8080 上运行 Vue.JS。在两个服务器中,我使用的是 HTTP 而不是 HTTPS。
Koa.JS 服务器使用 Passport.JS 执行 oAuth2 登录流程,并提供端点以从 API 获取数据并将承载令牌传递给授权标头。
Vue.js 服务器负责客户端代码。它使用 axios 库调用 Koa 端点。
如果我打开浏览器,并针对 Koa 服务器测试登录流程,一切都很好并且工作正常。以下是步骤:
本地主机:8081/api/oauth/authenticate
/li>
- 用户登录并授予访问权限
完成后,回调被称为 localhost:8081/api/oauth/callback
/li>
- 会话与用户信息一起保存
用户打开新选项卡以转到 localhost:8081/api/user/profile
/li>
- Koa 服务器调用另一个 API 来检索用户配置文件数据,Vue.js 应用程序得到一个正确的 JSON 响应
但是,如果我执行以下操作, ctx.session 会丢失:
- 导航到 localhost:8080(Vue.js 服务器)
- 通过重定向到 Koa 端点 localhost:8081/api/oauth/authenticate 来执行登录
- 登录并授予访问权限
- 在 Koa 上 /callback 重定向回 localhost:8080/auth?isUserLoggedIn=true
在 Vue 应用程序中,使用 this.$route.query.isUserLoggedIn 检索查询参数,如果为 true,则调用 Koa 端点以获取用户配置文件数据 localhost:8081/api/user/profile
/li>
最后一步返回 401 Unauthorized。
经过进一步调查,具有配置文件端点的 Koa 路由位于 appRoutes 中间件中。该中间件紧跟在 app.use(requireLogin) 中间件之后,该中间件检查会话是否经过身份验证 (ctx.isAuthenticated())。
这是发生 401 错误的地方,因为此时 ctx 会话为空。
我在处理某种时间问题吗?我尝试在我的 Koa server.js 文件中注释掉头盔中间件,但没有帮助。
请注意,如果我在同一个浏览器会话中打开一个新选项卡并转到 localhost:8081/api/user/profile 它工作正常。仅当从 Vue.js 调用此端点时,它才会由于 ctx.sesssion 为空而失败。
知道是什么将 ctx.session 重置为 null 吗?
javascript - koa2:如何组织路由器控制器逻辑(中间件与非中间件)?
我有一个“控制器”中间件(连接到 koa-router)。
我想知道组织我的“内部”应用程序逻辑的最佳方法是什么(在我的控制器之外,连接到 koa-router 的中间件功能 router.post('/', createCtrl)
)。
第一种情况:"Everything is a middleware"。我的控制器只是组成了一组中间件函数,这些函数需要逐步从初始请求对象变为非常适合的响应对象。(我通过 读取并传递下一个中间件所需的参数
/li>ctx.state
)。第二种情况:应用逻辑与 Koa 完全“解耦”。控制器将是一个调用非中间件函数的 koa 中间件,如下所示:
/li>
将控制器视为中间件功能的组合是个好主意吗?或者这是对中间件功能的误用?
koa - 如何将默认返回状态设置为 200?
在处理不需要响应的请求时,我希望默认状态代码默认为 200(目前为 404)。
我有一堆插入数据库的 api 端点。目前我必须设置 ctx.status 或 ctx.body 返回 200(如果未设置,则返回 404)。有没有办法默认返回200?
谢谢
node.js - 无论路由如何,如何提供相同的静态文件?
我有一个反应应用程序。使用 webpack 我为生产而构建。现在我尝试设置一个小 koa 服务器来提供 webpack 生成的静态文件用于生产。
所以我做了这个
文件所在dist/
的目录(index.html、bundle 等)在哪里。这很好用,但仅适用于路由 '/' (localhost:3001/) 在我的应用程序中,我使用反应路由器,所以我需要通过示例转到 /login (localhost:3001/login)。但是当我尝试时,我得到“未找到”。使用 devServer(通过 webpack),这条路线运行良好。我只需要始终为 /dist 服务,无论路线如何。如何做到这一点?
node.js - Koa.js 总是找不到 404
我在 Koa 中开发并使用 Firebase 进行消息传递,因为有一个实时数据库。当我想从 firebase 获取消息时,我得到了 Not found,但console.log()
它显示了我。
这是我的功能getConversation
(消息)
然后我像这样在另一个控制器中调用它
最后,我在路由中调用它。
我总是找不到身体。有人知道我该如何解决吗?
node.js - Node Koa 如何将参数传递给中间件?
将我的 Express 应用程序转换为 Koa...
我正在谷歌搜索,我正在谷歌搜索,我找不到如何将额外的参数传递给 Koa 中间件。例如...
我需要将一些变量 bodyAttribs(字符串数组)名称发送到 bodySchemaTest 中间件,我不知道如何在 Koa 中执行此操作。
我现在正在尝试 Koa。请分享您的专业知识:-)
node.js - 获取 Koa 实际路线
我是koa的新手。我需要在 koa 请求中获得实际路线。
示例 1:如果我到达一条路线 /user
并获得 ctx 原始 url /user/
。
示例 2:如果我打了一条路线user/:id
,我得到了 ctx 原始 url /user/1
。
我试着得到这样的路径
我想获得user/:id
每个请求中的实际路由路径。
在快速路线中获得这样的实际路径
输出:
server-sent-events - 使用 Koa 处理服务器发送的事件
在用 Express 实现 SSE 之后,我想对 Koa 做同样的事情,如下所示:
对于我的客户,在 React 组件的构造函数中:
但由于某种原因,我在客户端收到以下错误消息:
Firefox 无法在http://localhost:8080/stream建立与服务器的连接。
即使我的客户的请求/stream
确实通过了(但没有回复)。
什么可能导致 SSE 连接出现此问题?
我有一个 Koa 服务器在给定端口上侦听,这是一条使用正确的标头数据捕获初始 GET 请求的路由,但它失败了。
koa - 如何在 Koa 中间件中传递参数?
所以我在 Koa 中有这个功能,它基本上检查用户是否可以访问特定的路线。
我想将它用作中间件:
但后来我收到一条错误消息:
中间件必须是函数而不是对象
仅当我尝试将参数传递给它时才会发生这种情况。
我在这里做错了什么?