axios 封裝、proxyTable代理設(shè)置

  1. axios 封裝
  2. 設(shè)置代理
  3. 打包時(shí),設(shè)置不同的接口地址
  4. 其他

1.axios封裝

//HttpService.js
import axios from 'axios';
import qs from 'qs';
import * as common from './common';

let API_HOST = '/dev';
if (process.env.HOST === 'prod') {
    API_HOST = 'http://prod.com';
} else if (process.env.HOST === 'test') {
    API_HOST = 'http://test.com';
}
// 添加請(qǐng)求攔截器
axios.interceptors.request.use(function (config) {
    let token = common.$_userx.token();
    // 在發(fā)送請(qǐng)求之前做些什么
    if (token) {
        config.headers.login_token = token;
    }
    return config;
});
// 添加響應(yīng)攔截器
axios.interceptors.response.use(function (response) {
    if (response.data.code !== 200) {
        if(response.data.code === 3005){
            common.$_out();
        }
        return Promise.reject(response.data);
    }
    return response.data;
});


function get(url, data) {
    return axios.get(API_HOST + url, {
        params: data
    });
}

function post(url, data) {
    let token = common.$_userx.token();
    data['login_token'] = token;
    return axios.post(API_HOST + url, qs.stringify(data));
}

export default {
    get, post
}

1.1 全局設(shè)置

//main.js
import axios from './utils/HttpService';
//全局方法
Vue.prototype.$http = axios;

1.2調(diào)用

this.$http.post('xxx/xxx', {
  a:1
}).then(res=>{}).catch(res=>{})

2.設(shè)置代理

  //config/index.js

 proxyList: {
        '/dev': {
            target: 'http://192.168.0.0:0000',  // 接口的域名
            // secure: false,  // 如果是https接口,需要配置這個(gè)參數(shù)
            changeOrigin: true, // 如果接口跨域,需要進(jìn)行這個(gè)參數(shù)配置
            pathRewrite: {
                '^/dev': ''
            }
        }
    }

3.打包時(shí),設(shè)置不同的接口地址

//config.js/prod.env.js
'use strict'
let HOST = process.argv.splice(2)[0] || 'prod';
module.exports = {
    NODE_ENV: '"production"',
    HOST: '"'+HOST+'"'
}

//HttpService.js
let API_HOST = '/dev';
if (process.env.HOST === 'prod') {
    API_HOST = 'http://prod.com';
} else if (process.env.HOST === 'test') {
    API_HOST = 'http://test.com';
}

//打包命令
npm run build -- test    --> 測(cè)試環(huán)境
npm run build -- prod    --> 正式環(huán)境

4.其他

4.1 Axios使用說(shuō)明: https://www.kancloud.cn/yunye/axios/234845

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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