express/multer/cookie-parser/cookie-session中间件

express

  1. express是啥
    是个nodejs库,基于npm上中间件。类似koa
  2. 特点
    二次封装,非侵入式,增强型
  3. 安装
    1. npm init -y
    2. npm install express -D
    3. 安装中间件
      npm i body-parser -D
  4. API
    • 引入模块
      let express = require(‘express’);
      let bodyParser = require(‘body-parser’);
    • 搭建服务器
      let server = express();
    • 监听
      server.listen(端口号)
    • 静态页面托管
      server.use(express.static(‘静态页面文件地址’));
    • 响应请求
      server.get/post/use(地址,(req,res)=>{res.send(string|buffer)});
      注:res.send(字符串/buffer)相当于res.write(string|buffer);res.end();
      若地址为/,则地址可省略
      • req.query获取get请求
        获取到的是object
      • 使用中间件获取post请求
        let bodyParser = require(‘body-parser’);//引入中间件(中间件是个函数)
        server.use(bodyParser()); //使用body-parser中间件
      • req.method
        判断是GET请求还是POST请求
      • next是个函数,调用下一个相同地址的响应,除了/(如图 3-1)
        图 3-1 body-parser next

中间件

body-parser

  1. body-parser API
    1. 搭建服务器
      let bodyParser = require(‘body-parser’); //引入body-parser中间件
    2. 获取post数据,限定大小,约定返回数据类xx.urlencoded({limit:xx}) //xx单位为kb
      server.use(bodyParser.urlencoded({limit:5*1024}));//使用body-parser组件将表单限制大小为5M
    3. 获取post数据
      req.body

multer

  1. node.js原生文件操作方法

    • 文件重命名
      fs.rename('当前文件','改后的文件名',(err)=>{});
    • 引入path模块(处理文件与目录的路径)

      • path.parse('c:\\wamp\\xx.png'); 磁盘路径(str -> obj)

        1
        2
        3
        4
        5
        6
        7
        8
        //path.parse之后得到的对象格式
        {
        root: 'c:\\', 盘符
        dir: 'c:\\wamp', 目录
        base: 'xx.png', 文件名
        ext: '.png', 扩展名
        name: 'xx' 文件,不含扩展名
        }
      • path.join(‘磁盘路径1’,’磁盘路径2’)
        参数1:__dirname 魔术变量 返回当前文件所在的磁盘路径

  2. 文件上传
    1. 前端
      file enctype="multipart/form-data"
    2. 后端
      • 使用body-parser中间件(不适合)
        body-parser 接受 urlencode编码数据 ,数据回来的是字符,所以body-parse不适合文件上传,采用multer
      • 使用multer中间件
        1. let multer = require(‘multer’); 引入
        2. let objMulter = multer({ dest: './upload' }); 实例化 返回 multer对象(将文件保存到服务器下的upload文件夹中)
          dest: 指定 保存位置(存到服务器)
        3. app.use(objMulter.any()); any 允许上传任何文件
        4. req.files获取到上传的文件数组(如图 2-1)
          • fieldname: 表单name名
          • originalname: 上传的文件名
          • encoding: 编码方式
          • mimetype: 文件类型
          • buffer: 文件本身
          • size:尺寸
          • destination: 保存路径
          • filename: 保存后的文件名 不含后缀
          • path: 保存磁盘路径+保存后的文件名 不含后缀
            图 2-1 req.files获取到的数组示例
  1. 如何识别同一个人访问了服务器(用户唯一性判断)
    http协议,http无状态
    • 原理:通过给客户端浏览器保存一些信息(服务器给浏览器写cookie)
    • 需要中间件cookie-parser cookie-session
    • 流程
      浏览器->服务器->给浏览器种cookie(服务器保留一份seesionID)->下次浏览器(带着cookie)->服务器(利用seesionID和cookie对比)->返回内容
    • cookie-paser
      let cookieParser = require(‘cookie-parser’);
      server.use(cookieParser());
      • res.cookie(key,value,{配置}) 给浏览器种cookie
      • req.cookie.key 返回cookie(服务器读cookie)
      • res.clearCookie(key) 服务器给浏览器删cookie
    • cookie-session
      let cookieSession = require(‘cookie-session);
      server.use(cookieSession({
      name:’key’,
      keys:[‘aa’,’bb’], //用来加密,为了安全,必须存在
      maxAge:1000*5 //过期时间}
      ));
      • 服务器写session
        req.session.key = value;
      • 服务器读session
        req.session.key
      • 服务器删session
        req.session.key = undefined;
文章目录
  1. 1. express
  2. 2. 中间件
    1. 2.1. body-parser
    2. 2.2. multer
    3. 2.3. cookie-parser cookie-session
|