当前位置: 首页 > news >正文

​​深入解析 Vue 中的 pathRewrite:路径重写规则详解​​

1. 什么是 pathRewrite?​

pathRewrite 是 Vue CLI devServer.proxy 配置中的一个选项,用于​​重写(修改)代理请求的路径​​。它的主要作用是:

  • ​移除或替换请求路径中的特定前缀​​(如 /api)。
  • ​自定义路径映射规则​​,使前端请求和后端接口路径解耦。

​2. 为什么需要 pathRewrite?​

​典型场景​

假设:

  • ​前端请求路径​​:/api/users
  • ​后端实际接口路径​​:/users(没有 /api 前缀)

如果直接代理:

proxy: {'/api': {target: 'http://localhost:8000',changeOrigin: true,}
}

请求会被转发到 http://localhost:8000/api/users,但后端可能期望 /users
这时就需要 pathRewrite 移除 /api 前缀。


​3. pathRewrite 的配置语法​

pathRewrite: {'^匹配的正则表达式': '替换后的字符串'
}
  • 键(Key)​​:正则表达式,匹配请求路径。
  • ​值(Value)​​:替换后的字符串(可空)。

​4. 常见用法示例​

​(1) 移除前缀(最常用)​

proxy: {'/api': {target: 'http://localhost:8000',changeOrigin: true,pathRewrite: {'^/api': '', // 移除 `/api` 前缀},},
}
  • ​前端请求​​:/api/users
  • ​实际代理请求​​:http://localhost:8000/users

​(2) 替换前缀​

pathRewrite: {'^/api': '/backend', // 将 `/api` 替换为 `/backend`
}
  • ​前端请求​​:/api/users
  • ​实际代理请求​​:http://localhost:8000/backend/users

​(3) 多路径重写​

pathRewrite: {'^/api/v1': '/v1', // /api/v1/users → /v1/users'^/api/v2': '/v2', // /api/v2/users → /v2/users
}

​5. 高级用法​

​(1) 正则表达式匹配

pathRewrite: {'^/api/(.*)': '/$1', // /api/users/1 → /users/1
}
  • (.*) 捕获任意字符,$1 引用捕获的内容。

​(2) 条件性重写​

pathRewrite: (path, req) => {if (path.startsWith('/api/admin')) {return path.replace('/api/admin', '/admin');}return path.replace('/api', '');
}

注意事项​

  1. ​正则表达式必须匹配​

    • 如果 pathRewrite 不匹配,路径不会被修改。
    • 示例:'^/api' 能匹配 /api/users,但不能匹配 /users
  2. ​顺序敏感

    pathRewrite: {'^/api': '/v1','^/api/v2': '/v2', // 这条规则永远不会生效!
    }

    解决方案​​:调整顺序,先匹配更具体的路径:

  3. pathRewrite: {'^/api/v2': '/v2','^/api': '/v1',
    }

    ​与 changeOrigin 配合使用

  4. proxy: {'/api': {target: 'http://localhost:8000',changeOrigin: true, // 修改 Host 头pathRewrite: { '^/api': '' },},
    }

    7. 完整示例​

    // vue.config.js
    module.exports = {devServer: {proxy: {'/api': {target: 'http://localhost:8000',changeOrigin: true,pathRewrite: {'^/api': '', // /api/users → /users'^/api/v2': '/v2', // /api/v2/users → /v2/users},},},},
    };

    8. 总结

  5. ​场景​pathRewrite 配置​
    移除前缀'^/api': ''
    替换前缀'^/api': '/backend'
    多级路径重写'^/api/v1': '/v1'
    正则表达式动态匹配'^/api/(.*)': '/$1'

    通过灵活使用 pathRewrite,你可以轻松实现前后端路径的解耦,让代理配置更清晰! 🚀

相关文章:

  • 衡阳做淘宝网站网络营销成功案例ppt免费
  • 流量网站制作seo网站自动推广
  • 怎么自己建一个网站网站收录查询代码
  • 1高端网站建设北京网络推广
  • 网站做代码图像显示不出来杭州seo服务公司
  • 网站建设方案书格式上海专业优化排名工具
  • 汽车一键启动升级手机控车
  • 技术选型:时序数据库(三)
  • vue 实现多区域图片拖拽
  • Neo4j2.0.1桌面端使用教程(简化版)
  • 关于如何在 Git 中切换到之前创建的分支的方法
  • Redis主从架构哨兵模式
  • 生僻字处理工具类
  • 【附源码】旅游网站系统设计与实现+SpringBoot + Vue (前后端分离)
  • ArrayList和LinkedList详解
  • python打卡day56@浙大疏锦行
  • 时间同步 gptp ptp
  • 【软件系统架构】系列四:嵌入式软件-NPU(神经网络处理器)系统及模板
  • 如何解决本地DNS解析失败问题?以连接AWS ElastiCache Redis为例
  • LabVIEW气密性测试系统
  • 川翔云电脑全新上线:三维行业高效云端算力新选择
  • Solidity 从 0 到 1 |Web3 开发入门免费共学营
  • Launcher3 中的 MVC 架构类解析
  • 基于HAR包转换为pytest用例的测试技术实战
  • 鸿蒙 FoldSplitContainer 解析:折叠屏布局适配与状态管理
  • 黑马ReactDay02