Vue封装axios请求

request.js

// 引入axios库
import axios from 'axios';

// 创建一个axios实例
const instance = axios.create({
  baseURL: 'https://example.com/api', // 设置请求的基础路径
  timeout: 5000, // 设置请求超时时间
});

// 添加请求拦截器
instance.interceptors.request.use(
  (config) => {
    // 在请求发送之前做一些处理,比如添加token、修改请求头等
    return config; // 返回处理后的config
  },
  (error) => {
    // 请求错误时的回调函数,返回一个被拒绝的Promise对象
    return Promise.reject(error);
  }
);

// 添加响应拦截器
instance.interceptors.response.use(
  (response) => {
    // 在响应返回之前做一些处理,比如解析数据等
    return response.data; // 返回处理后的响应数据
  },
  (error) => {
    // 响应错误时的回调函数,返回一个被拒绝的Promise对象
    return Promise.reject(error);
  }
);

// 导出axios实例
export default instance;

api.js

// 引入axios实例
import {instance} from './request'

// 获取用户信息,参数为用户ID
export const getUserInfo = (userId) => {
  return instance.get(`/users/${userId}`)
    .then(response => response.data) // 返回响应数据
    .catch(error => console.log(error)) // 处理错误信息
}

// 更新用户邮箱,参数为用户ID和新邮箱
export const updateUserEmail = (userId, email) => {
  return instance.patch(`/users/${userId}`, {email})
    .then(response => response.data)
    .catch(error => console.log(error))
}

// 获取用户列表,参数为请求数据
export function getTeamsInfo(data){
    return instance({
     url:'/user', // 请求地址
     method:'get', // 请求方法
     data // 请求数据
    })
} 


// 继续添加其他需要的请求方法

Vue.js 开发中,封装 Axios 请求是一种常见的做法,通常是为了简化全局的 API 调用,避免在每个组件中都重复引入 Axios 并设置相同的配置。以下是创建一个简单的 Axios 封装实例: ```javascript import axios from 'axios'; import { MessageBox } from 'element-ui'; // 创建一个 Vue 插件 export default { install(Vue) { // 创建一个 Vue 实例的方法 Vue.prototype.$axios = axios.create({ baseURL: process.env.BASE_API, // 当前应用的基础URL timeout: 5000, // 设置默认超时时间 headers: { 'Content-Type': 'application/json', // 默认请求头 }, }); // 添加全局错误处理 Vue.prototype.$httpError = (error) => { if (error.response) { console.log(error.response.data); MessageBox.error(error.response.data.message || error.response.status); } else { console.error('未知错误', error); } }; // 错误拦截器 Vue.prototype.$axios.interceptors.response.use( response => response, error => { this.$httpError(error); return Promise.reject(error); } ); // 请求拦截器 Vue.prototype.$axios.interceptors.request.use( config => { // 在发送请求之前做些什么 return config; }, error => { // 对请求错误做些什么 this.$httpError(error); return Promise.reject(error); } ); }, }; ``` 通过这种方式,你在 Vue 组件中就可以像下面这样轻松地发送请求了: ```vue methods: { fetchData() { this.$axios.get('/api/data').then(response => { // 处理成功响应 }).catch(this.$httpError); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小趴菜~时倾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值