美文网首页
js axios 简单封装

js axios 简单封装

作者: 糖醋里脊120625 | 来源:发表于2023-07-24 14:41 被阅读0次
    http.js文件
    import axios from 'axios'
    import { Toast } from 'vant';
    import $router from '@/router/router'
    
    axios.interceptors.request.use(
        (config) => {
            let tokenInfo = JSON.parse(localStorage.getItem("storageToken"));
            if(tokenInfo){
                config.headers[tokenInfo.tokenName] = tokenInfo.tokenValue
            }
            return config
        },
        (error) => {
          console.log(error) 
          return Promise.reject(error)
        }
      )
    
    //http响应拦截器
    axios.interceptors.response.use(data => { //请求后的处理
    
        
        if(data.data.status != "success") {
            Toast.fail(data.data.message);
            return Promise.reject(data.data);  
    
        }else{
            return Promise.resolve(data.data);   
        }
        
    }, error => {
        const errorInfo = error.response.data;
        Toast.fail(errorInfo.message);
        if (error.response.status==401) {
            Toast.fail("登录已失效,请重新登录!");
            $router.replace({ path: '/login' })
            return Promise.reject(res)
        }
        if (error.response.status==504) {
            Toast.fail("网络请求超时,请稍后重试!");
            return Promise.reject(res)
        }
        
        
        return Promise.reject(error.response.data)
    })
    
    export default axios
    
    api.js文件
    import axios from 'axios'
    export function ResetMessage(mobile){
      return axios({
        method: 'POST',
        url: `/farm-market-api/merchant/merchant-user-account/reset-password/`+mobile+`/sms`,
      })
    }
    
    使用文件
    import { ResetMessage,ResetPassword } from "@/request/loginApi.js";
    ResetMessage(userPhone.value).then((res) => {
          if(res){
            Toast.success('验证码发送成功');
            isSmsSend.value = true
            countDown()
          }
        })
        .catch((error) => {
          
        })
        .finally((end) => {
        });
    
    
    上传axios文件
    import axios from 'axios'
    import { Toast } from 'vant';
    
    
    function createRequest(config) {
      /**
       * 创建 axios 实例
       */
      const instance = axios.create({
        baseURL: '',
        timeout: 1000 * 5,
        transformRequest: [
          (data, headers) => {
            if (headers['Content-Type']?.includes('form-data')) {
              return data;
            }
          },
        ],
      });
    
      /**
       * 请求拦截器
       */
      instance.interceptors.request.use(
        (config) => {
          let tokenInfo = JSON.parse(localStorage.getItem("storageToken"));
          if (tokenInfo) {
            config.headers[tokenInfo.tokenName] = tokenInfo.tokenValue
          }
          return config
        },
        (error) => {
          console.log(error) // for debug
          return Promise.reject(error)
        }
    
      );
    
      /**
       * 响应拦截器
       */
      instance.interceptors.response.use(data => { //请求后的处理
        if (data.data.status != "success") {
          Toast.fail( data.data.message);
        }
        return data.data
      }, error => {
        const errorInfo = error.response.data;
        Toast.fail(errorInfo.message);
        // Toast.clear();
        if (!error.response) {
          let res = {
            code: -1,
            msg: '网络断开了,请检查网络状况。'
          }
          return Promise.reject(res)
        }
    
        return Promise.reject(error.response.data)
      });
    
      return new Promise((resolve, reject) => {
        instance
          .request(config)
          .then((res) => {
            resolve(res);
          })
          .catch((e) => {
            reject(e);
          });
      });
    }
    
    const defRequest = createRequest;
    
    
    export function upLoadImg(postdata) {
      return defRequest({
        url: `/farm-market-api/merchant/merchant-goods/image`,
        method: 'post',
        data: postdata,
        headers: { 'Content-Type': 'multipart/form-data' },
      });
    
    }
    
    export function upBusinessImg(postdata) {
      return defRequest({
        url: `/farm-market-api/merchant/merchant-info/business-license-image`,
        method: 'post',
        data: postdata,
        headers: { 'Content-Type': 'multipart/form-data' },
      });
    
    }
    
    
    export function upLoadHealthCode(postdata) {
      return defRequest({
        url: `/farm-market-api/merchant/purchase-entry-reg-personnel/health-code-image`,
        method: 'post',
        data: postdata,
        headers: { 'Content-Type': 'multipart/form-data' },
      });
    }
    
    export function upLoadTripCode(postdata) {
      return defRequest({
        url: `/farm-market-api/merchant/purchase-entry-reg-personnel/trip-code-image`,
        method: 'post',
        data: postdata,
        headers: { 'Content-Type': 'multipart/form-data' },
      });
    }
    
    export function upLoadNucleicAcidProve(postdata) {
      return defRequest({
        url: `/farm-market-api/merchant/purchase-entry-reg-personnel/nucleic-acid-prove-image`,
        method: 'post',
        data: postdata,
        headers: { 'Content-Type': 'multipart/form-data' },
      });
    }
    
    
    
    上传文件使用
    import { upBusinessImg } from "@/request/UploadFile.js";
    function afterCard(file) {
      Toast.loading({
        message: '加载中...',
        forbidClick: true,
        duration: 0,
        forbidClick: false,
      });
      const formData = new FormData();
      formData.append("image", file.file);
      upBusinessImg(formData).then((res) => {
        imgVal.value = res.data.imageUrl
        
      })
      .catch((error) => {
      
      }).finally((end) => {
        closePopUp();
      });
    }
    

    相关文章

      网友评论

          本文标题:js axios 简单封装

          本文链接:https://www.haomeiwen.com/subject/uktcpdtx.html