axios封装http请求

本文介绍了一种使用Axios库封装HTTP请求的方法,包括POST和GET请求的封装,错误处理,以及请求参数的处理。提供了自定义错误类用于前端和服务端错误处理,通过示例展示了如何使用封装后的函数发送请求并处理响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

import axios from 'axios'

const HTTP_TIMEOUT = 15000;

export function httpPost(url, params = {},headers = {}) {
    return axios.post(url, params, {
        headers,      
        timeout: HTTP_TIMEOUT,
        withCredentials: true,
    }).then(resp=>resp.data);
}

export function httpGet(url, params = {}) {
    return axios.get(url, {
        params,
        timeout: HTTP_TIMEOUT,
        withCredentials: true,
    }).then(resp=>resp.data);
}

export const errorCode = {
    SUCCESS: 0,
}

// 发送请求,并且对返回进行处理
// succConvert  函数-后台数据格式转换

function postAndConvertResp(url, params, succConvert, errConvert, headers = {}) {
    return httpPost(url, params,headers)
        .then(resp => {
            return resp.err_code === errorCode.SUCCESS ?
                succConvert(resp.result) :
                errConvert ? errConvert(resp.err_code) : requestErrorHandler(resp.err_code, resp.err_msg);
        })
}


// 发送请求,并且对返回进行处理
function getAndConvertResp(url, params, succConvert, errConvert) {
    return httpGet(url, params)
        .then(resp => {
            return resp.err_code === errorCode.SUCCESS ?
                succConvert(resp.result) :
                errConvert ? errConvert(resp.err_code) : requestErrorHandler(resp.err_code, resp.err_msg);
        })
}




// 默认错误处理
function requestErrorHandler(errCode, errMsg) {  
  throw new ServerRespError(errMsg);
}
// 前端自定义错误
export class ParamError extends Error {
    constructor(message) {
        super(message)
    
        this.errorType = 'ParamError'
    }
}

// 服务端返回错误
export class ServerRespError extends Error {
    constructor(message) {
        super(message)
    
        this.errorType = 'ServerRespError'
    }
}

post请求参数处理:

function appendCommon2QueryStr(params) {
    return data2ParamString(params);
}

// param对象转换为paramStr
function data2ParamString(data) {
    if (typeof data === 'string') {
        return data;
    }
    return objectToParamString(data);
}

// 将对象转换成键值对形式,只支持单层
function objectToParamString(data) {
    var ret = '';
    for (var key in data) {
        ret = ret + key + '=' + encodeURIComponent(data[key]) + '&';
    }
    ret = ret.substr(0, ret.length - 1); // 去除最后的'&'
    return ret;
}


// 示例
export function example(reqData) {
    let request = {
         exam : reqData.exam
    }

    request = appendCommon2QueryStr(request);

    return postAndConvertResp(URL, request, succConvert)
}        

 

转载于:https://www.cnblogs.com/yhquan/p/10197083.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值