读者你好,我是CBK,分享一个基于axios封装的http库DEMO

新建netaxios.js文件,在netaxios.js引入axios依赖,可以加这里配置拦截器、请求超时时长设置等。

import axios from 'axios'

const axiosInstance = axios.create({
    timeout: 1000 * 60 * 60,
    validateStatus: function (status) {
        return status >= 200 && status < 300
    },
})

// 拦截器(请求拦截)
axiosInstance.interceptors.request.use((config) => {
    return config
})

// 拦截器(响应拦截)
axiosInstance.interceptors.response.use((res) => {
    return res
}, (err) => {
    return err
})


export default axiosInstance

新建http.js文件,引入netaxios.js,对几种通用请求进行二次封装。

/**
 * 通用请求封装
 */
import netaxios from "@/common/network/netaxios"

import {parseQueryParams} from '@/common/util/parse_query_params'

export const get = function (url, params = {}, config = {}) {
    return netaxios.get(url, {
        params,
    }, config)
}

export const post = function (url, params = {}, config = {}) {
    return netaxios.post(url, params, config)
}

export const put = function (url, {id, params = {}}, config = {}) {
    let rUrl = url
    if (id !== undefined && id !== '') {
        rUrl = url + '/' + id
    }
    return netaxios.put(rUrl, params, config)
}

export const deleter = function (url, id, config = {}) {
    return netaxios.delete(url + '/' + id, {}, config)
}

export const patch = function (url, {id, params = {}}, config = {}) {
    let rUrl = url
    if (id !== undefined && id !== '') {
        rUrl = url + '/' + id
    }
    return netaxios.patch(rUrl, params, config)
}

/**
 * 发送 query string形式的post请求
 * @param url
 * @param params 请求参数对象
 * @returns {Promise<any>}
 */
export const postForm = function (url, params = {}) {
    return post(url, params, {
        transformRequest: [function (data) {
            data = parseQueryParams(data);
            return data
        }],
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
    })
}

引入方式示例

import {
    get,
    post,
    patch,
    put,
    deleter
} from "@/common/network/http"
发布了1 篇原创文章 · 获赞 1 · 访问量 25

猜你喜欢

转载自blog.csdn.net/qq_39508535/article/details/104879743