vue3后台管理框架之axios二次封装

本文介绍了如何在项目中使用axios插件进行网络请求的二次封装,包括设置请求和响应拦截器,以及处理常见的HTTP状态码错误。同时提到了安装axios和使用Element-Plus展示错误消息的方法。
摘要由CSDN通过智能技术生成

在开发项目的时候避免不了与后端进行交互,因此我们需要使用axios插件实现发送网络请求。在开发项目的时候

我们经常会把axios进行二次封装。

目的:

1:使用请求拦截器,可以在请求拦截器中处理一些业务(开始进度条、请求头携带公共参数)

2:使用响应拦截器,可以在响应拦截器中处理一些业务(进度条结束、简化服务器返回的数据、处理http网络错误)

安装依赖

pnpm add axios@0.21.3 -S

在根目录下创建utils/request.ts

import axios from "axios";
  import { ElMessage } from "element-plus";
  //创建axios实例
  const request = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 5000
  })
  //请求拦截器
  request.interceptors.request.use(config => {
  return config;
  });
  //响应拦截器
  request.interceptors.response.use((response) => {
  return response.data;
  }, (error) => {
  //处理网络错误
  let msg = '';
  const status = error.response.status;
  switch (status) {
  case 401:
  msg = "token过期";
  break;
  case 403:
  msg = '无权访问';
  break;
  case 404:
  msg = "请求地址错误";
  break;
  case 500:
  msg = "服务器出现问题";
  break;
  default:
  msg = "无网络";

  }
  ElMessage({
  type: 'error',
  message: msg
  })
  return Promise.reject(error);
  });
  export default request;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3和TypeScript的Axios二次封装可以提供更好的代码可维护性和可扩展性。下面是一个示例: 首先,你需要安装axios和@types/axios(用于TypeScript类型定义): ``` npm install axios npm install @types/axios ``` 然后,在你的项目中创建一个`api`文件夹,并在其中创建一个`http.ts`文件,用于封装Axios。 ```typescript import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; // 创建一个Axios实例 const instance: AxiosInstance = axios.create({ baseURL: 'http://your-api-base-url.com', // 替换为你的API基础URL timeout: 5000, // 设置请求超时时间 }); // 请求拦截器 instance.interceptors.request.use( (config: AxiosRequestConfig) => { // 在发送请求之前做一些处理,例如添加请求头等 // config.headers['Authorization'] = 'Bearer ' + token; return config; }, (error) => { // 处理请求错误 return Promise.reject(error); } ); // 响应拦截器 instance.interceptors.response.use( (response: AxiosResponse) => { // 对响应数据进行处理 // 可以根据实际情况进行全局错误处理、数据转换等 return response.data; }, (error) => { // 处理响应错误 return Promise.reject(error); } ); export default instance; ``` 接下来,在需要使用Axios的地方导入`http.ts`文件,并使用封装好的Axios实例进行网络请求。 ```typescript import http from '@/api/http'; // 示例API请求方法 export const getUser = () => { return http.get('/user'); }; export const createUser = (data: any) => { return http.post('/user', data); }; // 其他API请求方法... ``` 这样,你就可以在Vue组件或其他地方使用这些封装好的API请求方法了。 ```typescript import { getUser } from '@/api/user'; export default { created() { this.fetchUser(); }, methods: { async fetchUser() { try { const user = await getUser(); // 处理返回的用户数据 } catch (error) { // 处理请求错误 } }, }, }; ``` 这就是Vue 3和TypeScript的Axios二次封装的基本示例。你可以根据你的项目需求进一步扩展和优化这个封装
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值