• 14-Node.js学习笔记-Express-中间件01


    Express框架是什么

    Express 是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助创建各种Web应用

    npm install express命令进行下载

    Express框架特性

    • 提供了方便简洁的路由定义方式
    • 对获取HTTP请求参数进行了简化处理
    • 对模版引擎支持程度高,方便渲染动态HTML页面
    • 提供了中间件机制有效控制HTTP请求
    • 拥有大量第三方中间件对功能进行扩展

    初体验

    ``` //引入express框架 const express = require('express'); //创建网站服务器 const app = express(); app.get('/',(req,res)=>{ //send() //1.send()方法内部会检测响应内容的类型 //2.send()方法会自动帮我们设置http状态码 //3.send()方法会帮我们自动设置响应的内容类型及编码 res.send('hello. Express'); }) app.get('/list',(req,res)=>{ res.send({ name:'柠檬不酸', age:20 }) }) //监听端口 app.listen(3000); console.log('网站服务器启动成功'); ```

    中间件

    中间件就是一堆方法,可以接收客户发来的请求,可以对请求做出响应,也可以将请求继续交给下一个中间件继续处理

    ``` //中间件主要由两部分构成,中间件方法以及请求处理函数 //中间件由Express提供,负责拦截请求,请求处理函数由开发人员提供,负责处理请求 //可以针对同一个请求设置多个中间件,对同一个请求进行多次处理 //默认情况下,请求从上到下一次匹配中间件,一旦匹配成功,终止匹配 //可以调用next方法将请求的控制权交给下一个中间件,直到遇到结束请求的中间件

    //引入express框架
    const express = require('express');
    //创建网站服务器
    const app = express();
    app.get('/request',(req,res,next)=>{
    req.name = "柠檬不酸";
    next();
    })
    app.get('/request',(req,res)=>{
    res.send(req.name)
    })
    //监听端口
    app.listen(3000);
    console.log('网站服务器启动成功');

    <h4>app.use中间件用法</h4>
    

    //app.use 匹配所有的请求方式,可以直接传入请求处理函数,代表接收所有的请求
    app.use((req,res,next)=>{
    console.log(req.url);
    next();
    });

    //app.use 第一个参数也可以传入请求地址,代表不论什么请求方式,只要是这个请求地址就接收这个请求
    app.use('/admin',(req,res,next)=>{
    console.log(req.url);
    next();
    });

    //引入express框架
    const express = require('express');
    //创建网站服务器
    const app = express();

    //接收所有请求的中间件
    app.use((req,res,next)=>{
    console.log('请求走了app.use中间件')
    next();
    })
    //当客户端访问/request请求的时候走当前中间件
    app.use('/request',(req,res,next)=>{
    console.log('请求走了app.use /request 中间件')
    next();
    })
    app.get('/list',(req,res,next)=>{
    req.name = "柠檬不酸le";
    next();
    })
    app.get('/request',(req,res,next)=>{
    req.name = "柠檬不酸";
    next();
    })
    app.get('/request',(req,res)=>{
    res.send(req.name)
    })
    app.get('/list',(req,res)=>{
    res.send(req.name)
    })
    //监听端口
    app.listen(3000);
    console.log('网站服务器启动成功');

    <h3>中间件应用</h3>
    <ul>
        <li>路由保护,客户端在访问需要登录的页面时,可以先使用中间件判断用户登录状态,用户如果未登录,则拦截请求,直接响应,禁止用户进入需要登录的页面</li>
    </ul>
    

    //引入express框架
    const express = require('express');
    //创建网站服务器
    const app = express();

    app.use('/admin',(req,res,next)=>{
    //用户没有登录
    let isLogin = true;
    //如果用户登录
    if(isLogin){
    //让请求继续向下执行
    next()
    }else{
    //没有登录做出的响应
    res.send('您还没有登录,不能访问/admin这个页面')
    }
    })

    app.get('/admin',(req,res)=>{
    res.send('您已经登录了,可以访问当前页面了')

    })

    //监听端口
    app.listen(3000);
    console.log('网站服务器启动成功');

    <ul>
        <li>网站维护公告,在所有路由的最上面定义接收所有请求的中间件,直接为客户端做出响应,网站正在维护中</li>
    </ul>
    

    //引入express框架
    const express = require('express');
    //创建网站服务器
    const app = express();
    //网站公告
    app.use((req,res)=>{
    res.send('当前网站维护中...')
    })

    app.use('/admin',(req,res,next)=>{
    //用户没有登录
    let isLogin = true;
    //如果用户登录
    if(isLogin){
    //让请求继续向下执行
    next()
    }else{
    //没有登录做出的响应
    res.send('您还没有登录,不能访问/admin这个页面')
    }
    })

    app.get('/admin',(req,res)=>{
    res.send('您已经登录了,可以访问当前页面了')
    })

    //监听端口
    app.listen(3000);
    console.log('网站服务器启动成功');

    <ul>
        <li>自定义404页面</li>
    </ul>
    

    //引入express框架
    const express = require('express');
    //创建网站服务器
    const app = express();
    //网站公告
    // app.use((req,res)=>{
    // res.send('当前网站维护中...')
    // })
    app.use('/admin',(req,res,next)=>{
    //用户没有登录
    let isLogin = true;
    //如果用户登录
    if(isLogin){
    //让请求继续向下执行
    next()
    }else{
    //没有登录做出的响应
    res.send('您还没有登录,不能访问/admin这个页面')
    }
    })

    app.get('/admin',(req,res)=>{
    res.send('您已经登录了,可以访问当前页面了')
    })
    //设置404页面
    app.use((req,res,next)=>{
    //设置状态码
    res.status(404)
    res.send('当前访问的页面是不存在的')
    })

    //监听端口
    app.listen(3000);
    console.log('网站服务器启动成功');

  • 相关阅读:
    提取字符串中的数字
    监控mysql执行的sql语句
    maven打包跳过单元测试
    idea常用快捷键
    spring boot 从入门到精通(一)启动项目的三种方式
    git从入门到精通(三)(git 生成本地密钥的方法:windows)
    经典面试题
    vue 20道精选面试题
    Angular输入框内按下回车会触发其它button的点击事件的解决方法
    快速搭建angular7 前端开发环境
  • 原文地址:https://www.cnblogs.com/foreverLuckyStar/p/12081947.html
Copyright © 2020-2023  润新知