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
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值