Node.js express框架--中间件

let express = require('express');
let app = express(); let app = new express();

应用层中间件

应用层中间件先执行 ,app.use() 放到路由之前

1.全局 中间件

app.use((req, res, next) => {
    console.log("应用层中间件");
    next();
});

2.应用层中间 的链式操作

app.use('/login', (req, res, next) => {
    console.log(1);
    next();
}, (req, res, next) => {
    console.log(2);
    next();
});

3.某个路由 中间件

app.use('/login',(req,res,next)=>{
    console.log("进入login路由之前的操作");
    next();
});

路由器级中间件 router.use()

let router = express.Router();
跳转下一个路由使用 next('route');

1.全局 路由中间件

router.all('*', (req, res, next) => {
    console.log("路由的all方法");
    next();
});

2.登录 路由中间件

放在当前路由之前

router.use("/login", (req, res, next) => {
    console.log("马上进入login路由");
    //出错
    let err=new Error("路由里面出错了");
    next(err);  //这样可以出发错误中间件的执行
});
route.get("/login", (req, res, next) => {});

3. 关联 路由中间件

app.use('/',route);

错误处理中间件

多了一个参数error

app.use((error,req,res,next)=>{
    console.log("错误中间件");
    //res.redirect('/');
    console.log(error.stack); //输出错误信息
    res.status(500).send("出错了");
});

内置 中间件

第三方 中间件 需安装

1. body-parser

表单提交 post 方式获取值的中间件
安装 cnpm install --save-dev body-parser
引入 let bodyParser = require('body-parser')
设置解析格式

app.use(bodyParser.urlencoded({ extended: false }));// application/x-www-form-urlencoded
app.use(bodyParser.json());//application/json

post请求内使用json格式数据 req.body

console.log(req.body);
//[Object: null prototype] { userid: 'admin', userpwd: '12345' }

2. cookie-parser

安装 cnpm install --save-dev cookie-parser
引入 let cookieParser = require('cookie-parser');
写入缓存 res.cookie('NAME',JSON.stringify(req.body){}

        res.cookie('USER_KEY', JSON.stringify(req.body), {
            maxAge: 60 * 10 * 10 * 10,  //6秒
            path:'/',//path  指当前cookie在哪个路径下有效  默认是 /
            domain:'www.maodou.com',//设置域名内访问
            signed:true //设置cookie 签名的  加密的
        });    

读取缓存
JSON.parse(req.cookies['NAME']); 不签名
JSON.parse(req.signedCookies['NAME]); 签名

    if (req.signedCookies['USER_KEY']) {
        let user = JSON.parse(req.signedCookies['USER_KEY']);
        userid = user.userid;
        userpwd = user.userpwd;
        rember = user.rember;
    }
    res.render('index', { //渲染数据
        userid: userid,
        userpwd: userpwd,
        rember: rember
    });

签名加密
如果cookie 要加密,设置加密的字符
app.use(cookieParser('abcdef'));

3. session

安装 cnpm install --save-dev express-session
引入 let session = require('express-session')
写入session req.session.user = JSON.stringify(req.body);
读取session req.session.user

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值