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通常项目线上一般为正式接口

你们可能用不到,用到的话,我之后在补充吧