zoukankan      html  css  js  c++  java
  • axios请求处理

    import axios from 'axios';
    import router from '@/router';
    import { Message } from 'element-ui';
    import { getToken, base64Encrypt, base64Decrypt, serializeData } from '@/utils/auth';
    // import {
    //   getToken,
    //   aesEncrypt,
    //   getNoncestr,
    //   getTimestamp,
    //   // getSign,
    //   // setAccesstoken,
    //   getAccesstoken,
    //   // removeAccesstoken,
    //   serializeData,
    //   base64Encrypt,
    //   base64Decrypt,
    //    getAccount
    // } from '@/utils/auth';
    
    
    // create an axios instance
    const service = axios.create({
      baseURL: process.env.MALL_BASE_HOST,
      timeout: 15000
    });
    // const appid = '8145955969';
    // const appSecret = 'l8y70yhm8vonwc904i6ugjs3s1zfqo77';
    // const accessTokenName = 'accessToken';
    // function get_access_token() {
    //   let accessToken = '';
    //   let token = getToken();
    //   accessToken = getAccesstoken(accessTokenName);
    //   if (accessToken) {
    //     return accessToken;
    //   }
    //   let requestObj;
    //   if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
    //     requestObj = new XMLHttpRequest();
    //   } else { // code for IE6, IE5
    //     /* eslint-disable */
    //     requestObj = new ActiveXObject('Microsoft.XMLHTTP');
    //   }
    //   let  queryData= {
    //     appid: "8145955969",
    //     appsecret: "l8y70yhm8vonwc904i6ugjs3s1zfqo77"
    //   }
    //   let url = `${process.env.MALL_BASE_HOST}/mall_manage/back/token/getToken?appid=${aesEncrypt(appid)}&appSecret=${aesEncrypt(appSecret)}`;
    //   requestObj.open('get', url, true);
    //   // requestObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    //   requestObj.setRequestHeader("appid","8145955969");
    //   requestObj.setRequestHeader("appsecret","l8y70yhm8vonwc904i6ugjs3s1zfqo77");
    //   requestObj.setRequestHeader("usertoken",token);
    //   requestObj.send('');
    //   console.log(requestObj.response);
    //   let obj = base64Decrypt(requestObj.response);
    //   console.log(obj);
    //   if (typeof obj !== 'object') {
    //     obj = JSON.parse(obj);
    //   }
    //   if (obj.code === 0) {
    //     accessToken = obj.data.accesstoken;
    //   }
    //   if (accessToken) {
    //     setAccesstoken(accessTokenName, accessToken);
    //   }
    //   return accessToken;
    // }
    
    // request interceptor
    service.interceptors.request.use(config => {
      // Do something before request is sent
      config.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
      let token = getToken();
      // let account = getAccount();
      // let accessToken = get_access_token();
      // let timestamp = getTimestamp();
      // let noncestr = getNoncestr();
      // let sign = getSign(accessToken, appid, appSecret, noncestr, timestamp);
      if (token) {
        config.headers['usertoken'] = token;
      }
      // if (account) {
      //   config.headers['account'] = account;
      // }
      // if (accessToken) {
      //   config.headers['accesstoken'] = accessToken;
      // }
      // if (timestamp) {
      //   config.headers['timestamp'] = timestamp;
      // }
      // if (noncestr) {
      //   config.headers['noncestr'] = noncestr;
      // }
      if (config.method.toLowerCase() === 'post') {
        if (config.data) {
          let dataStr = JSON.stringify(config.data);
          let base64Str = base64Encrypt(dataStr);
          config.data = serializeData({ param: base64Str });
        }
      }
      return config;
    }, error => {
      // Do something with request error
      console.log(error);
      Promise.reject(error);
    });
    
    // respone interceptor
    service.interceptors.response.use(
      response => {
        if (response.data) {
          try {
            let str = base64Decrypt(response.data);
            let res_data = JSON.parse(str);
            response.data = res_data;
            if (res_data.resultCode === '-2') {
              let returnUrl = location.href;
              sessionStorage.setItem('returnUrl', returnUrl);
              router.push('/login');
            }
            if (response.data && response.data.resultCode !== '0') {
              let errorMsg = response.data.msg;
              errorMsg = errorMsg ? errorMsg : '网络错误,请稍后再试。';
              Message({
                message: errorMsg,
                type: 'error'
              });
            }
          } catch (e) {
            console.log('出错了,' + e + ',接口返回数据:' + response.data);
          }
        }
        return response;
      },
      error => {
        console.log('error' + error);
      }
    );
    
    export default service;
    import axios from 'axios';
    import router from '@/router';
    import { Message } from 'element-ui';
    import {
      getToken,
      removeToken,
      aesEncrypt,
      getNoncestr,
      getTimestamp,
      getSign,
      setAccesstoken,
      getAccesstoken,
      removeAccesstoken,
    } from '@/utils/auth';
    
    const appid = '8145955969';
    const appSecret = 'l8y70yhm8vonwc904i6ugjs3s1zfqo77';
    const accessTokenName = 'accessToken';
    
    function get_access_token() {
      let accessToken = '';
      accessToken = getAccesstoken(accessTokenName);
      if (accessToken) {
        return accessToken;
      }
      let requestObj;
      if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        requestObj = new XMLHttpRequest();
      } else { // code for IE6, IE5
        /* eslint-disable */
        requestObj = new ActiveXObject('Microsoft.XMLHTTP');
      }
      let url = `${process.env.BASE_HOST}/api/system/Token?appid=${aesEncrypt(appid)}&appSecret=${aesEncrypt(appSecret)}`;
      requestObj.open('get', url, false);
      requestObj.send('');
      let obj = requestObj.response;
      if (typeof obj !== 'object') {
        obj = JSON.parse(obj);
      }
      if (obj.code === 0) {
        accessToken = obj.data.accesstoken;
      }
      if (accessToken) {
        setAccesstoken(accessTokenName, accessToken);
      }
      return accessToken;
    }
    
    
    // create an axios instance
    const service = axios.create({
      baseURL: process.env.BASE_HOST,
      timeout: 60000
    });
    
    
    // request interceptor
    service.interceptors.request.use(config => {
      // Do something before request is sent
      let token = getToken();
      let accessToken = get_access_token();
      let timestamp = getTimestamp();
      let noncestr = getNoncestr();
      let sign = getSign(accessToken, appid, appSecret, noncestr, timestamp);
      if (token) {
        config.headers['usertoken'] = token;
      }
      if (accessToken) {
        config.headers['accesstoken'] = accessToken;
      }
      if (timestamp) {
        config.headers['timestamp'] = timestamp;
      }
      if (noncestr) {
        config.headers['noncestr'] = noncestr;
      }
      if (sign) {
        config.headers['sign'] = sign;
      }
      return config;
    }, error => {
      // Do something with request error
      console.log(error);
      Promise.reject(error);
    });
    
    // respone interceptor
    service.interceptors.response.use(
      response => {
        if (response.data && response.data.code === -2) {
          let returnUrl = location.href;
          sessionStorage.setItem('returnUrl', returnUrl);
          router.push('/login');
        }
        if (response.data && response.data.code === -3) {
          removeToken();
          removeAccesstoken(accessTokenName);
        }
        if (response.data && response.data.code !== 0) {
          let errorMsg = response.data.message;
          errorMsg = !!errorMsg ? errorMsg : '网络错误,请稍后再试。';
          Message({
            message: errorMsg,
            type: 'error'
          });
        }
        return response;
      },
      error => {
        console.log('error' + error);
      }
    );
    
    export default service;
  • 相关阅读:
    Windows程序调试系列: 使用VC++生成调试信息 转
    mysql基础
    mysql bug
    VS2010下配置Winpcap 开发环境
    WIN7 下面 装XP
    Iptables 指南 1.1.19
    mysql内核 innodb存储引警(卷1)配书 用VS 2003 编绎 mysql-3.23.49 源代码
    cmake
    Windows+VS2012环境下编译调试MySQL源码 转
    哈佛图书馆自习室墙上的训言 (自勉)
  • 原文地址:https://www.cnblogs.com/yangzhenhong/p/10950619.html
Copyright © 2011-2022 走看看