node.js - 在 Koa 中,接收 POST 请求时上下文对象为空?

标签 node.js koa

我是 Koa 新手,正在创建一个演示应用程序。我想创建一个 API 来处理 POST 请求,但是当我 console.log(ctx); 时,indexRouter.js 中的 ctx 中没有任何内容,控制台只打印空对象,如 {}

我不知道为什么会发生这种情况。请有人建议我哪里做错了? 请帮助我通过 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 {}
  });
}

我的请求对象(由 postman )是:

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

POSTMAN

最佳答案

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

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

关于node.js - 在 Koa 中,接收 POST 请求时上下文对象为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43061723/

相关文章:

node.js - 如何关闭可读流(结束前)?

node.js - Windows : npm install getting error ERR! 代码 ECONNRESET

javascript - AngularJS 是否仅适用于单页应用程序 (SPA)?

javascript - Koa 和 Stripe,等待渲染页面

node.js - 子路由无法在 koa-router 的单独文件中工作

javascript - 如何等待 promise 完成然后返回生成器函数?

node.js - Telegram Bot |检测用户是否从移动设备或桌面设备发送消息

node.js - 在 node.js 中禁用 TLS 1.1?

javascript - Koa.js 中止正在运行的请求

node.js - 将辅助方法添加到 Koa2 中的上下文对象的最佳方法