首页 前端知识 vue3中封装axios请求

vue3中封装axios请求

2024-04-29 11:04:23 前端知识 前端哥 397 139 我要收藏

        在 Vue3 中,可以使用 axios 库进行网络请求,并将其封装到一个自定义的函数中以便全局使用。具体实现步骤如下:

1.安装 Axios:可以通过 npm 或 yarn 安装 axios 库。

npm install axios
# 或者
yarn add axios

2.创建一个 axios 实例并设置默认配置项和拦截器,该文件取名叫request.js


import axios from 'axios'
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000
})

// request 拦截器
service.interceptors.request.use(
  config => {
    // 在这里可以设置请求头、请求参数等return config
  },
  error => {
    console.log(error)
    return Promise.reject(error)
  }
)

// response 拦截器
service.interceptors.response.use(
  response => {
    // 在这里处理返回数据const { data } = response
    if (data.code !== 200) {
      console.error('Error:', data.message)
      return Promise.reject(newError(data.message || 'Error'))
    } else {
      return data
    }
  },
  error => {
    console.log(error)
    return Promise.reject(error)
  }
)

// 封装具体的请求方法: 四种请求类型不和下面的3和4标题内容放在一起
export const get = (url, params) => {
  return service .get(url, { params });
};

export const post = (url, data) => {
  return service .post(url, data);
};

export const put = (url, data) => {
  return service .put(url, data);
};

export const delete= (url, data) => {
  return service .delete(url, data);
};

export default service

        在上述代码中,我们创建了一个名为 service 的 axios 实例,并设置了一些默认的配置项和拦截器。其中,request 拦截器用于请求发送前对请求做一些处理,例如设置请求头、请求参数等;response 拦截器用于对返回数据进行处理,例如根据接口返回的状态码判断请求是否成功等。

3.将 axios 封装到一个函数中,api.js


import service from '@/utils/request'
export function request(config) {
  return service(config)
}

        在上述代码中,我们将 axios 封装到一个名为 request 的函数中,并导出该函数,以便在其他地方可以直接调用。

4.在代码中使用封装好的 axios 请求


import { request } from '@/api'
request({
  url: '/user',
  method: 'get'
}).then(response => {
  console.log(response)
})

5.结合request.js中四种请求,代替上面3和4标题

import { get, post,put, delete } from '@/utils/request';

// 发送GET请求的示例
get('/users', { id: 1 })
  .then((response) => {
    // 处理响应数据
    console.log(response);
  })
  .catch((error) => {
    // 处理请求错误
    console.error(error);
  });

// 发送POST请求的示例
post('/users', { name: 'John', age: 25 })
  .then((response) => {
    // 处理响应数据
    console.log(response);
  })
  .catch((error) => {
    // 处理请求错误
    console.error(error);
  });

         在上述代码中,我们引入封装好的 request 函数,并通过传递一个包含请求参数的配置对象来发起网络请求。

总结

        需要注意的是,在实际应用中,我们可能还需要根据业务需求进一步封装不同类型的请求,例如 GET 请求、POST 请求、PUT请求、DELETE等,以及处理请求错误等情况。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/6051.html
标签
axios
评论
发布的文章

JQuery中的load()、$

2024-05-10 08:05:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!