当前位置: 首页 > 工具软件 > koa-grace > 使用案例 >

原生nodejs在koa中获取表单提交的数据 和利用koa-bodyparser

李烨
2023-12-01

module文件夹下的 common.js方法封装


exports.getPostData=function(ctx){

    return new Promise(function(resolve,reject){//需要返回一个promise对象
        try{
            let str='';
            ctx.req.on('data',function(chunk){

                str+=chunk;
            })
            ctx.req.on('end',function(chunk){

                resolve(str);
            })


        }catch(err){
            reject(err);

        }
    })

}

后台引入ejs引擎 所以 views/index.ejs代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

    <form action="/doAdd" method="post">
        用户名: <input type="text" name="username"/>
        <br/>
        <br/>
        密 码: <input type="password" name="password"/>
        <br/>
        <br/>
        <button type="submit">提交</button>
    </form>

</body>
</html>

后台 app.js


var Koa=require('koa'),
    router = require('koa-router')(),
    views = require('koa-views'),
    common = require('./module/common.js');
var app=new Koa();
/*应用ejs模板引擎*/
app.use(views('views',{
    extension:'ejs'
}))

router.get('/',async (ctx)=>{

    await  ctx.render('index');
})

//接收post提交的数据
router.post('/doAdd',async (ctx)=>{

    //原生nodejs 在koa中获取表单提交的数据
    var data=await common.getPostData(ctx);

    console.log(data);
    ctx.body=data;
})



app.use(router.routes());   /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000);

以上是原生nodejs在koa中获取表单提交的数据

用koa-bodyparser就更简单了。不需要封装一个方法来接收数据

如下 koa-bodyparser.js

/*
 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);
 类似资料: