【问题标题】:Context object is empty while receiving POST request , in Koa?在 Koa 中接收 POST 请求时上下文对象为空?
【发布时间】:2017-08-21 01:33:15
【问题描述】:

我是 Koa 的新手,我正在创建一个演示应用程序。我想创建一个API来处理POST请求,但是当我console.log(ctx);然后ctxindexRouter.js中什么都没有,控制台只打印像{}这样的空对象。

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

serverKoa.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");
});

indexRouter.js:

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

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

Method: POST,
url:http://localhost:3005/postnew
body:{
    "firstName":"viki",
    "lastName":"Kumar",
    "userName":"vk12kq14",
    "password":"098765432"
}
content-type:application/json

【问题讨论】:

    标签: node.js koa


    【解决方案1】:

    您的代码似乎有两个问题:

    • 您没有使用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 的形式提供。

    【讨论】:

    • 非常感谢,非常感谢您今天的帮助。你节省了我的时间。太感谢了 。它对我有用。
    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 2019-01-06
    • 2015-09-18
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 2017-03-22
    • 2021-03-20
    相关资源
    最近更新 更多