尤明明Blog

网站建设 | 前端切图,技术不仅是一种专业,更是一种责任!

您的当前位置: 首页 » 前端学习 » vue »

axios的二次封装(详解)

2024-11-28   Umming   vue    评论(0)    浏览(32)


一.对axios进行二次封装好处

1、代码封装,重用性高,减少代码量,减低维护难度。

2、统一处理一些常规的问题一劳永逸,如http错误。

3、拦截请求和响应,提前对数据进行处理,如获取token,修改配置项。

安装axios

npm下载

npm install axios

下载完成之后在main.js中全局引入

import axios from 'axios'
Vue.prototype.$axios = axios

在src下创建出一个新的文件夹 http

在http文件夹下创建一个新的api.js文件

//对axios进行二次封装,将刚才下载好的axios导入进来
import axios from "axios";
//2. 利用axios对象的方法create,去创建一个axios实例
//requests就是axios,只不过稍微配置一下
const api = axios.create({
    //基础路径
    baseURL: '', // 所有请求的公共地址部分
    timeout: 5000 // 请求超时时间,这里的意思是当请求时间超过5秒还未取得结果时,提示用户请求超时
})
 
// 请求拦截处理 请求拦截 在请求拦截中可以补充请求相关的配置
// interceptors axios的拦截器对象
api.interceptors.request.use(config => {
    // config 请求的所有信息
    // console.log(config);
    // 响应成功的返回
    return config // 将配置完成的config对象返回出去 如果不返回 请求讲不会进行
}, err => {
    // 请求发生错误时的相关处理 抛出错误
    //响应失败的返回
    Promise.reject(err)
})
 
//响应拦截处理  响应拦截器:包含两个函数(一个是成功返回的函数,一个是失败的返回的函数)
api.interceptors.response.use(res => {
    // 我们一般在这里处理,请求成功后的错误状态码 例如状态码是500,404,403
    // res 是所有相应的信息
    console.log(res)
    return res.data
}, err => {
    // 服务器响应发生错误时的处理
    Promise.reject(err)
})
 
export default api


在http文件夹在创建一个 axios.js文件  用来封装请求接口

// 引入 封装的api 
import api from './api.js';
//下面是简写的形式
// getXXX 自定义的接口名字
export const getXXX = () => api.get('/getXXX');
 
// export const getBanner = (params) => api.get(`/apigb/v1/component`, { params})
// export const postBanner = (params) => api.post(`/apigb/v1/component/update-info`, params)

// // 下面是详细的写法
// export const xxxx = (params) => api({
//     url: '', // 请求地址
//     method: 'post', // 请求方式
//     // data: params, // (一般post请求,我们习惯使用 data属性来传参)
//     params: params //(一般get请求,我们习惯使用params属性来传参)
//     // 注意:data,和 params 两个属性传参使用,并不是固定的,也可以调换使用。
// })


最后就可以在组件中引入使用了 

//在使用的组建中载入
// banner 自定义接口的名字
import { banner } from "../http/axios.js";


标签: vue

本文链接:https://www.umming.com/vue/366.html

声明:本站信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!


发表评论:

//