NodeJS博客实战07_body-parser模块的使用
前端发送的数据请求需要后端获取,express的中间件模块body-parser可用于获取前端Post提交的数据
在app.js中加载该模块,并进行配置,body-parser提供了bodyParser.json(),bodyParser.raw(),bodyParser.text(),bodyParser.urlencode()四种解析数据的方法,其中最后一种支持utf-8的解析方式,bodyParser.urlencode()提供了多个参数,这里用到的是extended - 当设置为false时,会使用querystring库解析URL编码的数据;当设置为true时,会使用qs库解析URL编码的数据。后没有指定编码时,使用此编码。默认为true。
加载body-parser后,使用req.body即可获取前端传过来的post信息。
var express = require('express'); //加载express模块
var swig = require('swig'); //加载模板处理模块
var app = express(); //创建app应用,相当于nodeJS的http.createService()
var mongoose = require('mongoose'); //加载数据库模块
var bodyParser = require('body-parser');//加载body-parser处理post提交的数据
//配置模板引擎
app.engine('html',swig.renderFile); //定义当前模板引擎,第一个参数:模板引擎名称,也是模板文件后缀;第二个参数:处理模板的方法
app.set('views','./views'); //设置模板文件存放的目录,第一个参数必须是views,第二个参数是目录
app.set('view engine','html'); //注册模板
swig.setDefaults({cache:false});//取消模板缓存
app.use('/public',express.static(__dirname + '/public'));//当用户请求的路径ulr以/public开头时,以第二个参数的方式进行处理(直接返回__dirname + '/public'目录下文件)
app.use(bodyParser.urlencoded({extended:true}));//bodyparser设置
//根据不同的功能划分模块
app.use('/admin',require('./routers/admin'));
app.use('/api',require('./routers/api'));
app.use('/',require('./routers/main'));
mongoose.connect('mongodb://localhost:27017/blog',function(err){
if(err){
console.log("数据库连接失败");
}else{
console.log("数据库连接成功");
app.listen(8081); //监听http请求
}
});
在api路由api.js中配置接受参数和返回信息
返回信息一般需要包含返回码和信息提示,因为可以提前定义好返回的格式resData
在router.use定义返回的数据格式,并调用next()继续执行下一个中间件router.post()。
获取的数据要考虑到用户各种填写情况
api.js
var express = require('express');
var router = express.Router();
//定义返回变量格式
var resData;
router.use(function(req,res,next){
resData = {
code:0,
message:''
};
next();
})
//注册逻辑
router.post('/user/register',function(req,res,next){
var username = req.body.username;
var password = req.body.password;
var repassword = req.body.repassword;
//用户名不能空
if(username == ''){
resData.code = 1;
resData.message = '用户名不能为空';
res.json(resData); //使用res.json的方法返回前端数据
return;
}
//密码不能为空
if(password == ''){
resData.code = 2;
resData.message = '密码不能为空';
res.json(resData);
return;
}
//两次密码不能不一样
if(password != repassword){
resData.code = 3;
resData.message = '两次输入的密码不一致';
res.json(resData);
return;
}
resData.message = '注册成功';
res.json(resData);
})
module.exports = router;
打开浏览器localhost:8081,进入注册页面,对于不通过后端验证的添加,将返回对应的code和message
还没有评论,来说两句吧...