axios 的三层封装进阶版
1. 用处
- 在做项目的时候频繁的去调接口其实非常麻烦,这种重复的工作就需要axios的三层封装来解决。
2. 简单版的三层封装实现
1. 第一层
- 第一步当然是安装引入axios了
yarn add axios
| import axios from "axios"; |
- 设置基础的服务器地址
| axios.defaults.baseURL = ‘服务器地址’ |
- 然后
一定要暴露出去
,因为第二层会引入。
2. 第二层
- 创建一个js文件,还是先引入,引入第一层的axios。注意这个引入的文件是第一层创建的js文件。
| |
| import axios from "@/utils/axios.js"; |
- 写好api接口,暴露出去。get方式参数要用params,post用data。
| |
| export const getGoodsList = (params) => { |
| return axios({ |
| method: 'get', |
| url: '/goods/catelist', |
| params, |
| }) |
| } |
| |
| export const EditGoodsClass = (data) => { |
| return axios({ |
| method: 'post', |
| url: '/goods/editcate', |
| data, |
| }) |
| } |
3. 第三层
- 第三层自然是引入使用了,在vue组件中引入。注意引入的是
第二层的js文件
。
| import { getGoodsList, EditGoodsClass,} from "@/api/user.js"; |
- 去使用,因为请求是异步的,所以可以async、await修饰它。
| async getList() { |
| let res = await getUserList(this.form); |
| this.tableData = res.data.data; |
| this.total = res.data.total; |
| }, |
3. 进阶版的axios三层封装。
1. 响应拦截
- 在发请求后,收到数据一般要根据不同的状态进行不同的处理,而不是直接使用。
- 去官网可以直接找到axios的拦截器。
- 这里的状态码要根据服务器的数据来。
| axios.interceptors.response.use(function (res) { |
| if ((typeof res.data.code) === 'number') { |
| |
| if (res.data.code === 0) { |
| |
| Message.success(res.data.msg) |
| } else if (res.data.code === 200) { |
| Message.success(res.data.msg) |
| } else { |
| |
| Message.error(res.data.msg) |
| } |
| } |
| return res; |
| }, function (error) { |
| |
| return Promise.reject(error); |
| }) |
2. 请求拦截
| axios.interceptors.request.use(function (config) { |
| |
| if (local.get('token')) { |
| config.headers.Authorization = 'Bearer ' + local.get('token') |
| } |
| return config; |
| }, function (error) { |
| |
| return Promise.reject(error); |
| }) |
这样就基本完成了进阶版
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现