vue - axios 2 차 패키지

import axios from 'axios'
import qs from 'qs'
import { Toast } from "mint-ui"
import {httpBaseUrl} from './config'    ====httpBaseUrl     


/**
 *     axios      
 *
 *        axios       $http
 *    
 * method      ,  'GET'   'POST',      
 * url          ,      ip,          , ip            config.js   , httpBaseUrl    : 10.88.123.01:8080
 * data         ,         
 *     Promise  ,then()      data        data,        res ,  data  res.data  
 *
 *
 * 
 */

//POST     (       )
axios.interceptors.request.use(config=>{
    return config
},error=>{
    return Promise.reject(error)
})


//      (       )
axios.interceptors.response.use(response=>{
    return response
},error=>{
    return Promise.resolve(error.response)
})

//         
function errorState(response){
    //       ,       
    if(response&&(response.status===200||response.status===304||response.status===400)){
        //   date     ,      response.data
        return response
    }else{
        Toast({
            message: '    ',
            position: 'bottom',
            duration: 3000,
        })
    }
}

//           
function successState(res){
    // if(res.data.body&&res.data.status){
    //     // if(res.data.body.length==0){
    //     //     Toast({
    //     //         message: '    ',
    //     //         position: 'bottom',
    //     //         duration: 1000,
    //     //     })
    //     // }
    //     if(res.data.status.code == '1001'){
    //         Toast({
    //             message: '     ',
    //             position: 'bottom',
    //             duration: 3000,
    //         })
    //     }
    // }
}


//      
const httpServer=(method='GET',url,data={},option={})=>{
    let requestMethod=method.toUpperCase()
    if(url.indexOf("://")>0){
        url=url
    }else if(url[0]!='/'){
        url=httpBaseUrl+'/'+url
    }else{
        url=httpBaseUrl+url
    }
    let Public={  //      

    }
    let httpDefaultOpts={ //http    
       method:requestMethod,
        url:url,
        timeout:65*1000,
        //Object.assign ES6      ,            JavaScript   。
        params:Object.assign(Public,data),     //GET
        // data:qs.stringify(Object.assign(Public,data)),
        data:JSON.stringify(Object.assign(Public,data)),  //POST
        headers:requestMethod=='GET'?{
            "Accept": "application/json",
            "Content-Type": "application/json; charset=UTF-8"
          }:{
            'X-Requested-With': 'XMLHttpRequest',
            // 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
            "Content-Type": "application/json; charset=UTF-8"
          }
    }
    Object.assign(httpDefaultOpts,option)

    if(requestMethod=='GET'){
        delete httpDefaultOpts.data
    }else{
        delete httpDefaultOpts.params
    }

    return new Promise((resolve,reject)=>{
        axios(httpDefaultOpts).then((res)=>{
            // console.log(res)
            successState(res)
            resolve(res.data)
        }).catch((response)=>{
            console.log(response)
            errorState(response)
            reject(response)
        })
    })
}

export default httpServer

좋은 웹페이지 즐겨찾기