请求封住

request.js页面


import axios from 'axios';
import Vue from '../main.js';
require("babel-polyfill");
import { url } from './url';
import md5 from 'js-md5';
import router from '../router';
// import store from '@/store';

var request = axios.create({
  timeout: 120000,
});

function sortObj(params) {
  let sortedStr = '';
  let keys = Object.keys(params).sort();
  for (let key of keys) {
    if (Array.isArray(params[key])) {
      if (Object.prototype.toString.call(params[key][0]) === '[object Object]') {
        for (let obj of params[key]) {
          sortedStr += (key + "=" + sortObj(obj));
        }
      } else {
        sortedStr += (key + "=" + JSON.stringify(params[key]));
      }
    } else {
      sortedStr += (key + "=" + params[key]);
    }
  }
  return sortedStr;
}

function ajax(opt,method){
  var token= sessionStorage.getItem('logintoken')
  var timestamp=new Date().getTime();
  var params;
  if(opt.params){
    //对传入的参数进行深拷贝,防止传入的参数对象被页面上其他逻辑改变,导致签名错误
    params=JSON.parse(JSON.stringify(opt.params));
  }else{
    params={1:1}
  }
  //axios会自动过滤值为undefined和null的参数,因此手动去掉这些参数,不让其参与签名,避免出现签名错误
  for (let key in params){
    if(params[key]==null){
      delete params[key]
    }
  }
  const sign = md5(sortObj(params) + '02093cbdb78d447db7b15b2fc3ac218b');
  var config={
    url: url + opt.url,
    method: method,
    headers:{
      token:token,
      timestamp:timestamp,
      sign:sign
    }
  }
  method==="GET"&&(config.params=params);
  method==="POST"&&(config.data=params);
  return new Promise((resolve,reject)=>{
    request(config).then(res=>{
      if(res.data.code==2){
        sessionStorage.clear();
        localStorage.clear();
        router.replace("/login");
        reject(res.data)
      }else{
        resolve(res.data)
      }
    }).catch(res=>{
      // Vue.$message.error("请求失败");
      reject(res)
    })
  })
}


export function ajaxGet (opt) {
  return ajax(opt,"GET")
}

export function ajaxPost (opt) {
  return ajax(opt,"POST")
}

export function reqExpost (method, url, params) {
  const timestamp = new Date().getTime().toString();
  params.token = sessionStorage.getItem('logintoken')
  const keys = Object.keys(params).sort(); let i; const length = keys.length; let key; let sortedString = '';
  for (i = 0; i < length; i++) {
    key = keys[i];
    sortedString += (key + '=' + params[key]);
  }
  const sign = md5(sortedString + '02093cbdb78d447db7b15b2fc3ac218b');
  console.info(sign);
  return axios({
    method: method,
    url:  baseUrl + url,
    headers: {
      'Content-Type': 'application/json',
      timestamp: timestamp,
      sign: sign,
      token:sessionStorage.getItem('logintoken')
    },
    data: params,
    responseType: 'blob' // 表明返回服务器返回的数据类型
  }).then(res => res.data);
};

api.js

import axios from 'axios';
import {reqExpost,ajaxGet,ajaxPost} from './request';
// //获取登录页的信息
export const reqStudioConfig = params => ajaxPost({ url: `/studio/config`, special:true, params });

// //注册
export const postregister = params => ajaxPost({url: `/studio/register`,params})

//天猫商户登录
export const login = params => ajaxPost({url: `tmall/shop/login`,params})
//获取发货地址列表
export const getAddressList = params => ajaxGet({url: `tmall/shop/address/list`,params})

//设置默认地址
export const addressDefault = params => ajaxPost({url: `tmall/shop/address/default`,params})
//获取工厂绑定列表
export const factoryList = params => ajaxGet({url: `tmall/shop/factory/list`,params})
// 图片合成》查询当前设置信息
export const imgCompositeGetCompositeSetting = params => ajaxGet({url: `imgComposite/getCompositeSetting`,params})
//合成监控  开始检查
export  const updateCompositeCheckStatus = params => ajaxPost({url:`imgComposite/updateCompositeCheckStatus`,params})


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值