axios

1,对axios的封装

第一步还是先下载axios
cnpm install axios -S
第二步建立一个http.js

import axios from 'axios' ;
import { Message } from 'element-ui';

axios.defaults.timeout = 5000;
axios.defaults.baseURL='' ;
//http request 拦截器
axios.interceptors.request.use (
  config =>{
  //const token = getCookie('名称');
config.data = JSON.stringify(config.data);
config.headers ={
'Content-Type':' application/x-www-form-urlencoded'
}
return config
},
error =>{
  return promise.reject(err)
}
)
//http response 拦截器
axios.interceptors.response.use(
  response => {
    if(response.data.errCode ==2){
      router.push({
        path:"/login",
        querry:{redirect:router.currentRoute.fullPath}//从哪个页面跳转
      })
    }
    return response;
  },
  error => {
    return Promise.reject(error)
  }
)
/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */
export function fetch(url,params={}){
  return new Promise ((resolve,reject) =>{
    axios.get(url,{params:params}).then(response => {
      resolve (response.data)
})
.catch(error => { reject(error) })
})
}

/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function post(url,data={}) {
  return new Promise((resolve,reject) =>{
    axios.post(url,data).then(response=>{
      resolve(response.data)
}),error=>{
  reject(error)
}
})
}
 /**
 * 封装patch请求
 * @param url
 * @param data
 * @returns {Promise}
 */

export function patch(url,data = {}){
  return new Promise((resolve,reject) => {
    axios.patch(url,data)
         .then(response => {
           resolve(response.data);
         },err => {
           reject(err)
         })
  })
}

 /**
 * 封装put请求
 * @param url
 * @param data
 * @returns {Promise}
 */

export function put(url,data = {}){
  return new Promise((resolve,reject) => {
    axios.put(url,data)
         .then(response => {
           resolve(response.data);
         },err => {
           reject(err)
         })
  })
}

第三步,在main.js中引用

import axios from 'axios'
import {post,fetch,patch,put} from './utils/http'
//定义全局变量
Vue.prototype.$post =post;
Vue.prototype.$fetch = fetch;
Vue.prototype.$patch = patch;
Vue.prototype.$put = put
最后在组件中直接引用
 mounted(){
    this.$fetch('/api/v2/movie/top250')
      .then((response) => {
        console.log(response)
      })
  },

你可能感兴趣的:(axios)