mock&联调
# 开发环境
如果前端应用和后端接口服务器没有运行在同一个主机上,如果接口地址不支持跨域,你需要在开发环境下将接口请求代理到接口服务器。
如果是同一个主机,可以直接请求具体的接口地址,或者让后端小伙伴解决跨域问题。
# 配置
开发环境时候,接口地址在项目根目录下.env.development文件配置
提示 .env文件中的字段如果是字符串,则无需加引号,默认全部为字符串
VITE_PROXY不能换行
# 配置跨域
如果你在 src/api/下面的接口为下方代码,且.env.development文件配置如下注释,则在控制台看到的地址为http://localhost:8001/api/login
由于/api匹配到了设置的VITE_PROXY所以上方实际是请求http://localhost:8000/login这样同时也解决了跨域问题,(8001为项目端口号,http://localhost:8000为PROXY 代理的目标地址)
# 配置如下
vite 本地跨域代理VITE_PROXY=[["/api","http://localhost:8000"]]
接口地址VITE_GLOB_API_URL=/api
# 提示
将VITE_GLOB_API_URL设置为跟VITE_PROXY内其中一个数组的第一个项一致的值即可。
# 无需跨域配置
如果没有跨域问题,可以直接忽略VITE_PROXY配置,直接将接口地址设置在VITE_GLOB_API_URL
注意 从浏览器控制台的 Network 看,请求是http://localhost:8000/api/xxx这是因为proxy配置不会改变本地请求的 url
# 生产环境
生产环境接口地址在项目根目录下.env.production文件配置
生产环境接口地址值需要修改VITE_GLOB_API_URL如果出现跨域问题,可以使用 nginx 或者后台开启 cors 进行处理
打包后如何进行地址修改? VITE_GLOB_* 开头的变量会在打包的时候注入_app.config.js文件内
dist/_app.config.js 修改相应的接口地址后刷新页面即可,不需要在根据不同环境打包多次,一次打包可以用于多个不同接口环境的部署
# 接口请求
1、页面交互操作;
2、调用统一管理的 api 请求函数;
3、使用封装的 axios.ts 发送请求;
4、获取服务端返回数据;
5、更新 data;
接口统一存放于src/api下面管理
# axios配置
axios 请求封装存放于src/utils/http/axios文件夹内部
除index.ts文件内容需要根据项目自行修改外,其余文件无需修改
Axios.tsaxios实例
axiosCancel.tsaxiosCancel实例,取消重复请求
axiosTransform.ts数据转换类
checkStatus.ts返回状态值校验
index.ts接口返回统一处理
# 更改参数格式
项目接口默认为 Json 参数格式,即headers: { 'Content-Type': ContentTypeEnum.JSON }
如果需要更改为form-data更改headers的,Content-Type为ContentTypeEnum.FORM_URLENCODED即可
# 多个接口地址
当项目中需要用到多个接口地址时, 可以在src/utils/http/axios/index.ts导出多个axios 实例
# 部分接口为mock部分为真实api
当项目中部分接口为mock部分为真实api
方式1、可以在src/utils/http/axios/index.ts导出axios 实例,然后在 src/api 里面单独引入
方式2、直接在src/api/xxx.ts里面url直接写上服务端完整api地址
# Mock服务
# 如何关闭mock
只需把VITE_USE_MOCK设置为false
关闭mock时VITE_GLOB_API_URL就需要配置成真实的接口地址了
# 线上Mock
由于该项目是一个展示类项目,线上也是用mock数据,所以在打包后同时也集成了mock通常项目线上一般为正式接口
你们可能用不到,用到的话,我之后在补充吧