Tag: koa router

ctx.render不会redirect页面

我很确定这是因为ctx.render函数只是为了渲染页面,但我不知道该怎么做才能做我想做的事情。 基本上,我试图redirect用户到用户的mypagelogin后,在标题中的jwt令牌,所以我用axios发送请求到服务器,服务器路由器function呈现dynamicpug文件与给定的数据。 我想把jwt数据放到帕格文件中,但是当我发送请求的时候,页面只是刷新自己,实际上并没有redirect到mypage。 这是代码 客户 try { let res = await axios(loginOpt) await store.set('jwtToken', res.data.token) let mpOpt = {headers: {"Authorization": 'Bearer ' + store.get('jwtToken')}} axios.get(`/u/${payload.email}`, mpOpt) } catch (e) { console.error("failed to send login request", e) } 路由器 router.get('/:userName', async (ctx, next) => { console.log("jwt TOKEN IS", ctx.header.authorization) let renderData = { userName: userName, profilePic: […]

Koa中间件订购

我遇到了koa js和中间件命令的问题。 我使用多个中间件,Koa路由器,强大的koa静态文件夹和一个用于设置标题。 现在,按照目前的顺序,当我从前端通过API将file upload到后端时,它会抛出一个CORS错误,这意味着头文件不在那里(所以这个中间件没有正确加载)。 当我移动它们时,别的东西就会停止工作。 这是我的代码: this.app.use(serve({rootDir: './uploads', rootPath: '/public/uploads/'})); this.app.use(router.routes()); this.app.use(formidable()); this.app.use((ctx, next) => { // Website you wish to allow to connect ctx.set('Access-Control-Allow-Origin', '*'); // Request methods you wish to allow ctx.set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); // Request headers you wish to allow ctx.set('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); // Set to true if […]

POST与koa(nodejs)

我一直烦恼地find只parsingJSON发送的例子。 我正在试图find一个POST来自一个表单的例子。 <form class="form-horizontal" role="form" action="/" method="post"> <input type="text" class="form-control" name="email" placeholder="your@email.here"> <input type="text" class="form-control" name="password" placeholder="password"> <button type="submit" class="btn btn-default">Sign in</button> </form> 正如你可以看到我有字段的email和password 。 我正在使用夸耀koa-router ,但这不工作的koa-router : .post('/', function* () { console.log(this.body.email); // <— undefined console.log(this.body.password); })

如何configurationkoa-router在任何一组路由之前运行公共代码?

我想添加一些function/module ,获取该目录下的任何匹配路线执行。 所以对于一组给定的路线: /module/ /module/page /module/things /module/things/:thingid 我想在/module路由器的代码在所有上述路线运行。 /module不渲染,它只是提取一些常见的数据并configuration视图上下文。 然后其他路线之一运行并呈现该页面。 这可能与koa路由器? 还是有更好的包装? 编辑:我想也许我必须做一个嵌套的路由器,并在嵌套之前添加中间件像这样: var subRouter = new Router(); subRouter.get('/', function *(next){ doSomething(); }); subRouter.get('/page', function *(next){ doSomething(); }); subRouter.get('/things', function *(next){ doSomething(); }); subRouter.get('/things/thingid', function *(next){ doSomething(); }); mainRouter.use('/module', function *(next) { doPreRouteSteps(); yield next; }, subRouter.routes() ); 似乎工作,但我不知道这是一个丑陋的黑客或什么。 如果有更好的方法,请告知。

Koa每次发送状态404

export async function getPlaces(ctx, next) { const { error, data } = await PlaceModel.getPlaces(ctx.query); console.log(error, data); if (error) { return ctx.throw(422, error); } ctx.body = data; } Koa每次发送404状态和空身,我做错了什么?

如何testing自定义Koa中间件的error handling?

作为从ExpressJs到Koa JS(v1)的旧应用程序迁移的一部分。 我写了一个中间件来处理发生的任何错误。 它看起来像这样: module.errors = function * (next) { try { yield next; } catch (err) { switch(err && err.message) { case: 'Bad Request': this.status = 400; this.body = {message: 'Bad Request'}; brea; default: this.status = 500; this.body = {message: 'An error has occurred'}; } this.app.emit('error', err, this); } } 它被包含在我的应用程序中,如下所示: const app = […]

如何为基于KOA的服务器生成API文档

我有一个基于KOA的服务器。 现在我想为服务器生成API文档。 有没有自动生成API文档的工具?

为什么koa路由器发送404?

我正在使用koa-router,koa-views和sequelize。 数据来自数据库,但状态= 404。我做错了什么? router.get('/', function *() { var ctx = this; yield models.drivers.findAll({ where: { userId: ctx.passport.user.id } }).then(function(drivers) { ctx.render('driversSearch', { drivers: drivers }); }); });

Koa路由器:如何获取查询string参数?

我正在使用koa-router。 我怎样才能得到请求的查询string参数? 这是我写得最好的: import koaRouter from 'koa-router'; const router = koaRouter({ prefix: '/courses' }); router.get('/', async (ctx) => { console.log(ctx.qs["lecturer"]); }); 但是qs是未定义的 任何帮助将深深感激!

从Koa的POST请求下载文件

我试图通过koa-router从Koa的POST请求处理程序中触发下载。 本质上,我试图做这样的事情: app.js const Koa = require('koa') const router = require('./router') const app = new Koa() app.use(router.routes()) app.use(router.allowedMethods()) app.listen(3000) router.js const fs = require('fs') const Router = require('koa-router') const router = new Router() router.post('/generate', function * () { const path = `${__dirname}/test.txt` this.body = fs.createReadStream(path) this.set('Content-disposition', 'attachment; filename= test.txt') }) module.exports = router client.js const […]