如何在koa-router中使用body-parser
发布于 8 年前 作者 without-yy 9240 次浏览 来自 问答
const Koa = require('koa');
const app = new Koa();
const router = require('koa-router')();
const bodyParser = require('koa-bodyparser');

app.use(router.routes());
app.use(bodyParser());

router.post('/test', async function (next) {
    this.body = this.request;
    console.log(`我是router中的=====> ${JSON.stringify(this.request.body)}`);
});

app.use(async ctx=> {
    console.log(`我不是router中的=====> ${JSON.stringify(ctx.request.body)}`);
    ctx.body = ctx.request.body;
});

app.listen(3000);

//打印结果
我不是router中的=====> {"tt":"11"}
我是router中的=====> undefined
使用postman测试
/**
	"koa": "^2.1.0",
    "koa-bodyparser": "^4.1.0",
    "koa-router": "^5.4.0"
*/

3 回复

已经解决 替换下 app.use(router.routes()); app.use(bodyParser()); 顺序就可以了

this 和ctx 可以在同一套代码中混用吗?

@yakczh 只是测试一下啊,koa-router里面直接取this,ctx是在app.use中

回到顶部