当前位置: 首页 > 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,你可以轻松实现前后端路径的解耦,让代理配置更清晰! 🚀

http://www.lqws.cn/news/531937.html

相关文章:

  • 算法 按位运算
  • 光场操控新突破!3D 光学信息处理迎来通用 PSF 工程时代--《自然》子刊:无需复杂算法,这一技术让 3D 光学成像实现 “即拍即得”念日
  • AI智能体——OpenManus 源码学习
  • [3D-portfolio] 版块包装高阶组件(封装到HOC) | Email表单逻辑 | 链式调用
  • Mac mini 跑 DeepSeek R1 及 QwQ-32B模型实测报告
  • 记dwz(JUI)前端框架使用之--服务端响应提示框
  • Jenkins与Kubernetes深度整合实践
  • 从零开始理解百度语音识别API的Python实现
  • Trae IDE 大师评测:驾驭 MCP Server - Figma AI Bridge 一键成就前端瑰宝
  • HDC 2025丨华为云AI原生中间件,构建应用运行的领先架构
  • DAY 43 复习日
  • docker 安装Elasticsearch + kibana + ik分词器
  • (七)Dockerfile文件20个命令大全详解
  • 【数据结构】--排序算法
  • Java--程序控制结构(下)
  • RK3568-休眠唤醒关机开机流程
  • 【NLP】自然语言项目设计02
  • MySQL (一):数据类型,完整性约束和表间关系
  • 12345政务热线系统:接诉即办,赋能智慧城市治理
  • 指标中台+大模型:解密衡石Agentic BI的NL2DSL架构实现
  • Prompt工程解析:从指令模型到推理模型的提示词设计
  • Linux 和 Windows 服务器:哪一个更适合您的业务需求?
  • 黑马JVM解析笔记(四):Javap图解指令流程,深入理解Java字节码执行机制
  • 创建Django项目
  • JVM调优实战 Day 7:JVM线程分析与死锁排查
  • 动态库与静态库【Linux】
  • 前端替换打包后文件中的内容方案(可用于渗透测试后将问题版本号清空临时解决方案)
  • 事务相关问题
  • 数学:逆元,同余
  • 热点代码探测确定何时JIT