NodeJS博客实战07_body-parser模块的使用

野性酷女 2022-05-28 00:54 420阅读 0赞

前端发送的数据请求需要后端获取,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信息。

  1. var express = require('express'); //加载express模块
  2. var swig = require('swig'); //加载模板处理模块
  3. var app = express(); //创建app应用,相当于nodeJS的http.createService()
  4. var mongoose = require('mongoose'); //加载数据库模块
  5. var bodyParser = require('body-parser');//加载body-parser处理post提交的数据
  6. //配置模板引擎
  7. app.engine('html',swig.renderFile); //定义当前模板引擎,第一个参数:模板引擎名称,也是模板文件后缀;第二个参数:处理模板的方法
  8. app.set('views','./views'); //设置模板文件存放的目录,第一个参数必须是views,第二个参数是目录
  9. app.set('view engine','html'); //注册模板
  10. swig.setDefaults({cache:false});//取消模板缓存
  11. app.use('/public',express.static(__dirname + '/public'));//当用户请求的路径ulr以/public开头时,以第二个参数的方式进行处理(直接返回__dirname + '/public'目录下文件)
  12. app.use(bodyParser.urlencoded({extended:true}));//bodyparser设置
  13. //根据不同的功能划分模块
  14. app.use('/admin',require('./routers/admin'));
  15. app.use('/api',require('./routers/api'));
  16. app.use('/',require('./routers/main'));
  17. mongoose.connect('mongodb://localhost:27017/blog',function(err){
  18. if(err){
  19. console.log("数据库连接失败");
  20. }else{
  21. console.log("数据库连接成功");
  22. app.listen(8081); //监听http请求
  23. }
  24. });

在api路由api.js中配置接受参数和返回信息

返回信息一般需要包含返回码和信息提示,因为可以提前定义好返回的格式resData

在router.use定义返回的数据格式,并调用next()继续执行下一个中间件router.post()。

获取的数据要考虑到用户各种填写情况

api.js

  1. var express = require('express');
  2. var router = express.Router();
  3. //定义返回变量格式
  4. var resData;
  5. router.use(function(req,res,next){
  6. resData = {
  7. code:0,
  8. message:''
  9. };
  10. next();
  11. })
  12. //注册逻辑
  13. router.post('/user/register',function(req,res,next){
  14. var username = req.body.username;
  15. var password = req.body.password;
  16. var repassword = req.body.repassword;
  17. //用户名不能空
  18. if(username == ''){
  19. resData.code = 1;
  20. resData.message = '用户名不能为空';
  21. res.json(resData); //使用res.json的方法返回前端数据
  22. return;
  23. }
  24. //密码不能为空
  25. if(password == ''){
  26. resData.code = 2;
  27. resData.message = '密码不能为空';
  28. res.json(resData);
  29. return;
  30. }
  31. //两次密码不能不一样
  32. if(password != repassword){
  33. resData.code = 3;
  34. resData.message = '两次输入的密码不一致';
  35. res.json(resData);
  36. return;
  37. }
  38. resData.message = '注册成功';
  39. res.json(resData);
  40. })
  41. module.exports = router;

打开浏览器localhost:8081,进入注册页面,对于不通过后端验证的添加,将返回对应的code和message

发表评论

表情:
评论列表 (有 0 条评论,420人围观)

还没有评论,来说两句吧...

相关阅读