• Express 路由


    路由:实际上就是映射关系

    现实中的路由案例:打10086时候 有那些按键 按键1-------业务1 按键2------业务2

     在这里:路由=按键与服务之间的映射关系


    Express中的路由:是客户端的请求服务器处理函数之间的映射关系

    Express中的路由组成的三部分:

    • 请求的类型
    • 请求的URL地址
    • 处理函数

     ——app.METHOD(PATH,HANDLER)  

    METHOD---请求类型(GET\POST)

    PATH——请求的url地址(与客户端的相关)

    HANDLER——处理函数,与之对应的处理函数(映射到服务器端的处理函数)

    简单的路由1:get请求类型

    1. app.get('/user',function(req,res){
    2. res.send({"name":"zj","age":66,"gender":"男"} )
    3. })

    简单的路由1:post请求类型

    1. app.post('/user',function(req,res){
    2. res.send('post请求的响应')
    3. })


     路由的匹配过程 

    每一个请求到达服务器的时候,需要经过路由的匹配,匹配成功才会调用对应的处理函数 

    在匹配时,会按照路由的顺序进行匹配,如果请求类型和请求的URL同时匹配成功,则Express会将这次请求,转交给对应的function函数进行处理——客户端的请求会从上到下进行匹配路由


    路由最简单的用法:将在服务器上挂载路由——实验案例

    首先新建文件夹——然后运行npm init -y——初始化package.json文件

    ——然后在你的文件夹下安装需要的包-- npm i express

    使用:  nodemon .\最简单的路由服务器.js启动服务器

    1. //导入express模块
    2. const express=require('express')
    3. //创建web服务器
    4. const app=express()
    5. //挂载路由
    6. app.get('/',(req,res)=>{
    7. res.send('处理函数 这是服务器给的 响应客户端的根url的get请求')
    8. })
    9. app.post('/',(req,res)=>{
    10. res.send('处理函数 这是服务器给的 响应客户端的根url的post请求')
    11. })
    12. //启动服务器、使用80端口
    13. app.listen(80,()=>{
    14. console.log('http://127.0.0.1 启动成功')
    15. })

     

     

     

    但上述的挂载路由(直接挂载在APP上)的方式实际中不常用——  导致代码量太多,不方便管理--使用路由模块化管理--将路由抽离为单独的模块


     路由模块化创建

    • 创建路由模块对应的.js文件——自定义的文件,专门用于挂载路由
    • 调用express.Router()函数创建路由对象(路由的实例)——前面的时候:const app=express()返回的是app,服务器的实例
    • 路由实例对象上挂载具体的路由(原来是app上)
    • 使用module.exports向外共享路由对象
    • 使用app.use()注册路由模块

     

    1. //导入express
    2. const express=require('express')
    3. //创建路由对象
    4. const Router=express.Router()
    5. //挂载具体路由
    6. Router.get('/user/a',function(req,res){
    7. res.send('GET USER A')
    8. })
    9. Router.post('/user/b',(req,res)=>{
    10. res.send('POST USER B')
    11. })
    12. //向外导出路由
    13. module.exports=Router//之前={对象 对象里面是属性 可以做一个省略}

    路由模块的注册和使用

    使用require导入路由模块,使用app.use(自定义路由模块)注册模块------让路由模块和服务器之间联系起来

    原先使用express向外托管静态资源的时候使用过app.use(express.static('文件夹的路径'))

    app.use()的作用:用来注册全局中间件--

    1. //导入express
    2. const express=require('express')
    3. //创建路由对象
    4. const Router=express.Router()
    5. //挂载具体路由
    6. Router.get('/user/a',function(req,res){
    7. res.send('GET USER A')
    8. })
    9. Router.post('/user/b',(req,res)=>{
    10. res.send('POST USER B')
    11. })
    12. //向外导出路由
    13. module.exports=Router//之前={对象 对象里面是属性 可以做一个省略}

     


    为路由模块添加统一的访问前缀——在前面托管静态资源的时候有使用过app.use(express.static('文件夹的路径'))------我们使用url访问静态资源的时候这个文件夹是不会出现在访问路径中——如果希望我们访问的时候有这个地址,我们需要在前面加上一个参数,app.use('/文件夹名字',express.static('文件夹的路径'))——相似

    app.use('/api',router)------------在原先路由的访问url中全部加上了一个前缀

     

  • 相关阅读:
    Redis高并发分布式锁详解
    科研中常用的搜索引擎推荐:Base
    一次服务器被入侵的处理过程分享
    Centos7安装Mysql8
    [Camunda BPMN进阶] 电商订单流程设计与调试
    有段CAN通信中的FIFO代码不理解
    spring ioc
    SpringSecurity入门和项目中使用
    【必知必会的MySQL知识】③DML语言
    echarts 绘制仿立体 矩形 渐变柱状图图表
  • 原文地址:https://blog.csdn.net/weixin_47295886/article/details/126667834