封裝axios 多個(gè)token的情況 是否攜帶token的情況

點(diǎn)個(gè)贊可好~

轉(zhuǎn)載請標(biāo)明出處~

import Axios from 'axios'
import qs from 'qs'
import * as ramda from 'ramda'

const apiAuthDomain = 'http://www.xxxxxx.com' 
const apiControlDomain = 'http://www.xxxxxxxxx.com' 
/**
 * 成功回調(diào)函數(shù)
 * @param {*} res
 * @param {*} resolve
 * @param {*} reject
 */
function successCallBack(res, resolve, reject) {
    if (res.data.success) {
        resolve(res)
    } else {
        reject(res)
    }
}

/**
 * 異常回調(diào)函數(shù)
 * @param {*} err 異常數(shù)據(jù)
 * @param {*} reject
 */
function failCallBack(err, reject) {
    reject(err)
}
/** Axios 基礎(chǔ)配置 */
Axios.defaults.timeout = 5000
/**
 * http request 攔截器
 */
Axios.interceptors.request.use(
    config => {
        let tokenName = ''
        if (
            !ramda.isNil(config.params['tokenName']) &&
            !ramda.isEmpty(config.params['tokenName'])
        ) {
            // console.log(config);
            tokenName = config.params['tokenName']
        }
        if (config.params['authorization']) {
            // 兩個(gè)token  誰有就拿那個(gè)
            let token = ''
            if (localStorage.getItem(tokenName) == null) {
                token = sessionStorage.getItem(tokenName)
            } else {
                token = localStorage.getItem(tokenName) // 讀取數(shù)據(jù);
            }
            config.headers['Authorization'] = token
        }
        delete config.params['authorization']
        delete config.params['tokenName']
        // config.headers["Content-Type"] = 'application/x-www-form-urlencoded';
        return config
    },
    err => {
        return Promise.reject(err)
    }
)
/**
 * http response 攔截器
 */
// Axios.interceptors.response.use(
//     response => {
//         if (response.data.errCode === "") {
//             //
//         }
//         console.log({ "axios-res": response })
//         return response;
//     },
//     err => {
//         console.log({ "axios-err": err })
//         return Promise.reject(err);
//     }
// )

/**
 * 處理請求鏈接,參數(shù)
 * @param { Object } paramData 參數(shù)/數(shù)據(jù)
 * @param { String } authorization Token
 */
function resolveAuthorization(paramData, authorization, tokenName) {
    if (ramda.isNil(paramData)) {
        paramData = {}
    }

    paramData.authorization = authorization
    paramData.tokenName = tokenName
    return paramData
}

/**
 * Axios Get 請求
 * @param { String } url Url
 * @param { Object } paramData 參數(shù)/數(shù)據(jù)
 * @param { String } authorization Token
 */
function Get(url, paramData, authorization = true, tokenName = 'token') {
    return new Promise((resolve, reject) => {
        Axios.get(url, {
            params: resolveAuthorization(paramData, authorization, tokenName)
        })
            .then(res => {
                successCallBack(res, resolve, reject)
            })
            .catch(err => {
                failCallBack(err, reject)
            })
    })
}

/**
 * Axios Post 請求
 * @param { String } url Url
 * @param { Object } paramData 參數(shù)/數(shù)據(jù)
 * @param { String } authorization Token
 */
function Post(url, paramData, authorization = true, tokenName = 'token') {
    return new Promise((resolve, reject) => {
        Axios.post(url, paramData, {
            params: resolveAuthorization({}, authorization, tokenName)
        })
            .then(res => {
                successCallBack(res, resolve, reject)
            })
            .catch(err => {
                failCallBack(err, reject)
            })
    })
}

/**
 * Axios Put 方法
 * @param { String } url Url
 * @param { Object } paramData 參數(shù)/數(shù)據(jù)
 * @param { String } authorization Token
 */
function Put(url, paramData, authorization = true, tokenName = 'token') {
    return new Promise((resolve, reject) => {
        Axios.put(url, paramData, {
            params: resolveAuthorization(paramData, authorization, tokenName)
        })
            .then(res => {
                successCallBack(res, resolve, reject)
            })
            .catch(err => {
                failCallBack(err, reject)
            })
    })
}

/**
 * Axios Del 方法
 * @param { String } url Url
 * @param { Object } paramData 參數(shù)/數(shù)據(jù)
 * @param { String } authorization Token
 */
function Del(url, paramData, authorization = true, tokenName = 'token') {
    return new Promise((resolve, reject) => {
        Axios.delete(url, {
            params: resolveAuthorization(paramData, authorization, tokenName)
        })
            .then(res => {
                successCallBack(res, resolve, reject)
            })
            .catch(err => {
                failCallBack(err, reject)
            })
    })
}
export { apiAuthDomain, apiControlDomain, Get, Put, Post, Del }

用法


/**
 * @用法
 * @默認(rèn)展示Get用法
 * @其他方法基本一致
 */
//默認(rèn)用法 默認(rèn)攜帶token
export function GteFirm(data) {
    return http.Get(http.apiAuthDomain + '/api/user/orgs', data)
}
//不需要攜帶token
export function RsaRegister(data) {
    return http.Get(http.apiAuthDomain + '/api/auth/secretkey', data, false)
}
//后臺拼接的寫法
export function GetEnterCode(data) {
    return http.Get(http.apiAuthDomain + '/api/auth/reacquire/' + data, {})
}
//默認(rèn)攜帶token
export function GetUserFrom(data) {
    return http.Get(http.apiAuthDomain + '/api/usercenter/me', data, true)
}
//默認(rèn)攜帶名字為EntrCodetoken的token
export function GetUserFrom(data) {
    return http.Get(http.apiAuthDomain + '/api/usercenter/me', data, true, 'EntrCodetoken')
}
//請求服務(wù)地址為apiControlDomain的接口
export function GetUserFrom(data) {
    return http.Get(http.apiControlDomain + '/api/usercenter/me', data, true, 'EntrCodetoken')
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容