在 Koa 中接收 POST 请求时上下文对象为空?
Context object is empty while receiving POST request , in 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 {}
});
}
我的请求对象(邮递员)是:
Method: POST,
url:http://localhost:3005/postnew
body:{
"firstName":"viki",
"lastName":"Kumar",
"userName":"vk12kq14",
"password":"098765432"
}
content-type:application/json
您的代码似乎有两个问题:
您没有使用 koa-router
的 "next" 版本,如果您想使用 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
。
我是 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 {}
});
}
我的请求对象(邮递员)是:
Method: POST,
url:http://localhost:3005/postnew
body:{
"firstName":"viki",
"lastName":"Kumar",
"userName":"vk12kq14",
"password":"098765432"
}
content-type:application/json
您的代码似乎有两个问题:
您没有使用
koa-router
的 "next" 版本,如果您想使用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
。