方式一:
1、安装
cnpm install koa-bodyparser --save
2、引入
const bodyParser=require('koa-bodyparser');
3、使用中间件,一定要放在路由启动之前
app.use(bodyParser());
4、获取post数据
ctx.request.body.键名
方式二:
原生封装异步方法:
exports.Posts=function(ctx)
{
return new Promise((resolve,reject)=>{
try{
let str='';
ctx.req.on('data',function(chunk){
str+=chunk;
})
ctx.req.on('end',function(){
resolve(str);
})
}catch(err)
{
reject(err);
}
})
}
代码示例:
const Koa=require('koa');
const Router=require('koa-router');
const views=require('koa-views');
const commonm=require('./public/common');
const bodyParser=require('koa-bodyparser');
const app=new Koa();
const router=new Router();
//配置模板引擎
// app.use(views('views',{extension:"ejs" })); //文件后缀必须为.ejs
app.use(views('views',{map:{html:'ejs'}}));
//放在路由启动前
app.use(bodyParser());
app.use(router.routes())
.use(router.allowedMethods());
//公共数据
app.use(async(ctx,next)=>{
ctx.state={
username:'jeff2'
};
await next();
})
router.get('/',async(ctx,next)=>{
await ctx.render("index",{
title:'jeff',
info:"<h2 style='color:red'>渲染</h2>"
});
})
router.post('/info',async (ctx,next)=>{
// var data=await commonm.Posts(ctx);
var data=ctx.request.body.name;
ctx.body=data;
})
app.listen(3000,()=>{
console.log('this koa server is running at http://localhost:3000/');
})