在Koa中接收POST请求时,Context对象是空的?

时间:2017-03-28 06:04:46

标签: node.js koa

我是Koa的新手,我正在创建一个演示应用。我想创建一个API来处理POST请求,但是当我private void acceptAlert() { try { Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_TAB); robot.keyPress(KeyEvent.VK_ENTER); } catch (AWTException e) { e.printStackTrace(); } } 时,console.log(ctx);中的ctx中没有任何内容,控制台只会打印indexRouter.js之类的空对象。< / p>

我不知道为什么会这样。请有人建议我在哪里做错了? 并请帮助我通过{}方法获取request.body

serverKoa.js:

POST

indexRouter.js:

var koa = require('koa');
var router = require('koa-router');
var app = new koa();
var route = router(); //Instantiate the router

app.use(route.routes()); //Use the routes defined using the router
const index = require('./router/indexRouter')(route);

app.listen(3005 ,function(){
console.log("\n\nKoa server is running on port: 3005");
});

,我的请求对象(邮递员)是:

var indexController=require('../controller/indexController');
module.exports = function (route) {
    route.post('/postnew',async ( ctx, next) => {
    console.log(ctx); // here  printing {}
  });
}

Seek(UInt64)

1 个答案:

答案 0 :(得分:3)

您的代码看起来有两个问题:

  • 您没有使用koa-router的“下一个”版本,如果您想使用async/await,则需要此版本。您可以这样安装:

    npm i koa-router@next --save
    
  • 您没有使用koa-bodyparser来解析请求数据:

    npm i koa-bodyparser --save
    

使用:

var koa        = require('koa');
var router     = require('koa-router');
var bodyParser = require('koa-bodyparser');

var app        = new koa();
app.use(bodyParser());
...

解析的正文数据将在您的路径处理程序中显示为ctx.request.body