一、原生 Nodejs 获取 post 提交数据
function parsePostData(ctx) { return new Promise((resolve, reject) => { try { let postdata = ""; ctx.req.on('data', (data) => { postdata += data }) ctx.req.on("end", function () { resolve(postdata); }) } catch (error) { reject(error); } }); }
二、Koa 中 koa-bodyparser 中间件的使用
1、安装 koa-bodyparser
npm install --save koa-bodyparser
2、安装 引入配置中间件
var Koa = require('koa'); var bodyParser = require('koa-bodyparser'); var app = new Koa(); app.use(bodyParser()); app.use(async ctx => { ctx.body = ctx.request.body; });
3、使用
ctx.request.body 获取 post 提交的数据
demo
/* Koa 中 koa-bodyparser 中间件获取表单提交的数据 1.npm install --save koa-bodyparser 2.引入var bodyParser = require('koa-bodyparser'); 3.app.use(bodyParser()); 4.ctx.request.body; 获取表单提交的数据 * */ var Koa=require('koa'), router = require('koa-router')(), views = require('koa-views'), bodyParser = require('koa-bodyparser'); var app=new Koa(); /*应用ejs模板引擎*/ app.use(views('views',{ extension:'ejs' })) //配置post bodyparser的中间件 app.use(bodyParser()); router.get('/',async (ctx)=>{ await ctx.render('index'); }) //接收post提交的数据 router.post('/doAdd',async (ctx)=>{ console.log(ctx.request.body); ctx.body=ctx.request.body; //获取表单提交的数据 }) app.use(router.routes()); /*启动路由*/ app.use(router.allowedMethods()); app.listen(3000);