axios封装 json请求,文件上传下载封装

import axios from'axios';
import {  getUserInfo, storeGet } from '@/utils/storege';

const commonRules = {
   axiosHeader: {
      headers: {
        'Content-Type': 'application/json',
      }
  },
  axiosFileHeader: {
    headers: {
      'Content-Type': 'mutipart/form-data'
    }
  },
  axiosResponseType:['json','text','arraybuffer','blob','document','stream','formData']
}

const instance = axios.create({
  baseURL: import.meta.env.VITE_APP_API_URL, //"http://192.168.0.43:8080/pmis_webservice".//import.meta.env.APP API URL
  //process.env.VITE APP API URLimport { config } from '@/config';

  timeout: 5000000,
  ...commonRules.axiosHeader
})

instance.interceptors.request.use(
  (config:any)=>{
      const userInfo =storeGet('useragent');
      if (userInfo?.token) {
        config.headers.Authorization = `${userInfo.token}`;
      }
      return config;
    }, (error: any) => {
      return Promise.reject(error);
    }
);


instance.interceptors.response.use(
  (response: any) => {
    if (response?.data?.code < 0) {
      if ([-1012, -1009].includes(response?.data?.code)) {
        localStorage.removeItem("userInfo");
        localStorage.removeItem("useragent");
        window.location.href = " / login ? timeout = true";
      }
      return response.data;
    }
  },
  (error: any) => {
    if (error.response?.status === 401) {
      return {
        error: 0
      }
    }
      return Promise.reject(error);
  }
);

export async function post(url: string, data: any=0, contentType: number=0, responseType: number=0) {
  return new Promise((resolve, reject) => {
    const userInfo = getUserInfo();
    if (userInfo?.token) {
      data.token = userInfo.token;
    }

    const configs:any =  contentType ===0? commonRules.axiosHeader : commonRules.axiosFileHeader;
    configs['responseType'] = commonRules.axiosResponseType[responseType];
    if (contentType === 1) {
      data.append('language', 'en')
      data.append('locationId',userInfo.locationId)
    }



    instance.post(url, contentType === 1 ? data : {
      language: "en",
      locationId: userInfo.locationId,
      ...data
    }, configs).then((response: any) => {
      resolve(response.data);
    },(error:any) => {
      reject(error);
    }).catch((error:any) => {
      reject(error);
    });
  });

}


export async function get(url: string, params: any, responseType: number) {
  return new Promise((resolve, reject) => {
    const userInfo = getUserInfo();
    if (userInfo?.token) {
      params.token = userInfo.token;
      }
    const configs:any =  {
      headers: {
        'Content-Type': 'application/json',
      },
      responseType: commonRules.axiosResponseType[responseType]
    };
    instance.get(url, {
      params: {
        language: "en",
        locationId: userInfo.locationId,
        ...params
      },
     ...configs
    }).then((response: any) => {
      resolve(response.data);
    }, (error: any) => {
      reject(error);
        }).catch((error: any) => {
      reject(error);
    });
  });
}

### storage

export const storeSet = (key: any, value: any) => {
  if (typeof value === "string") {
    return sessionStorage.setItem(key, value);
  }
  if (value == null) return sessionStorage.removeItem(key);
  sessionStorage.setItem(key, JSON.stringify(value));
};

export const storeGet = (key: any) => {
  const val = sessionStorage.getItem(key);
  if (val) {
    return val.indexOf("{") === 0 ? JSON.parse(val) : val;
  }
  return null;
};

export const getUserInfo: any = (key: any) => {
  return (
    sessionStorage.getItem("userInfo") || {
      userInfo: null,
    }
  );
};

### 使用

import { post } from "@/utils/request";

export const login = async (data: any) => {
  return post("/login", data);
};

### 上传文件

###  base64下载

### 打印

### 流或者json打印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值