React fetch 패키지

3377 단어 react.
http.js
export const $http = {
  URL:'       url',
  UrlEncode: (obj) => {
    if(!obj || Object.prototype.toString.call(obj) !== '[object Object]'){
      return '';
    }
    let params = [];
    for(let key in obj) {
      params.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
    }
    return params.join('&');
  },
  get: (Nothis,Objson) => {
    let Alldata = '';
    if(Objson.data) {
      Alldata = '?' + $http.UrlEncode(Objson.data);
    }
    fetch(`${$http.URL}${Objson.url}${Alldata}`,{
      method:'get',
      mode:'cors',
      headers:{
        'Access-Token': localStorage.getItem('token')
      },
    }).then((res) => {
    //   http     ,       
      if(res.status !== 200) {
        throw res.status
      }else{
        let Data;
        switch (Objson.dataType) {
          case 'json':
          {
            Data = res.json()
          }
          break;

          case 'text':
          {
            Data = res.test()
          }
          break;
        }
        return Data
      }
    }).then((res) => {
      Objson.success.call(Nothis, res)
    }).catch(( error ) => {
      if(Objson.error) {
        Objson.error.call(Nothis,error)
      }
    });
  },

  post:( Nothis , Objson) => {
    let formData = new FormData();
    if( Objson.data ) {
      let OB = Objson.data;
      for(let i in OB ){
        formData.append(i,OB[i])
      }
    }

    fetch(`${$http.URL}${Objson.url}`, {
      method: 'post',
      mode: 'cors',
      headers: {
        'Access-Token' : localStorage.getItem('token')
      },
      body:formData
    }).then( ( res ) => {
      if(res.status !== 200 ){
        throw res.status
      }else{
        let Data;
        switch ( Objson.dataType ) {
          case 'json':{
            Data = res.json()
          }
          break;
          case 'text':{
            Data = res.test()
          }
          break;
        }
        return Data
      }
    }).then(( res ) => {
      Objson.success.call(Nothis, res)
    }).catch(( error ) => {
      if(Objson.error ) {
        Objson.error.call(Nothis,error)
      }
    });
  },

  jump:() => {
    fetch(`${$http.URL}   url`, {
      method:'get',
      mode:'cors',
      headers:{
        'Access-Token': localStorage.getItem('token')
      },
    }).then(( res ) => {
      if(res.status !== 200) {
        throw res.status
      }
    }).catch(( error ) => {
      if(isNaN(error)) {
        if(error.message.substring(0,6) === 'Failed'){
          alert('     ,       ')
        }
        return
      }
      if(error === 401) {
        localStorage.removeItem('token');
        localStorage.removeItem('thisToken');
        localStorage.setItem('exitState','2')
        window.location.href = window.location.protocol + '//' + window.location.host + 'login'
      }
    })
  }
}

쓰다
//   
import { $http } from '@function/http'

//    
  $http.get(this, {
      url: "/live/visit/front/save",
      dataType: "json",
      success: function (res) { },
    });

좋은 웹페이지 즐겨찾기