axios

首先安装axios

npm install axios --save

在src下新建utils文件夹

再新建request.js文件

//utils->request.js
import axios from 'axios'
const requests = axios.create({
  baseURL: process.env.NODE_ENV==="production"?process.env.VUE_APP_SRC:process.env.VUE_APP_BASE_API, 
  timeout: 5000
})

//请求拦截器
requests.interceptors.request.use(
  config => {
      // 在发送请求之前做些什么
      return config;
  },
  error =>{
      // 对请求错误做些什么
      return Promise.reject(error);
  }
);

//响应拦截器
requests.interceptors.response.use(
  response => {
      // 对响应数据做点什么
      return response;
  },
  error => {
      // 对响应错误做点什么
      return Promise.reject(error);
  }
);

export default requests
使用:
//api/getInfo.js
import requests from '@/utils/request'

export function getInfo(data) {
  return requests({
    url: '/list/info',
    method: 'get',
    params:data
  })
}

  

getData () {
      return new Promise((resolve, reject) => {
        getInfo(this.params).then(response => {
          const { data: res } = response
          console.log(res.data)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    }

  

  解决开发环境跨域:

//.env.development
NODE_ENV = 'development'
VUE_APP_BASE_API = '/localApi'
VUE_APP_SRC = 'http://ss.aa.com/'

 

//.env.production
NODE_ENV = 'production'
VUE_APP_BASE_API = '/localApi'
VUE_APP_SRC = 'http://ss.aa.com/'

 

//vue.config.js
module.exports = {
  publicPath: './',
  assetsDir: 'static',
  productionSourceMap: false,
  devServer: {
    hot: true,
    open: false, // 浏览器自动打开
    https: false,
    port: 8080,
    proxy: {
      // 匹配到/localApi开头时 替换成target指定的地址
      '/localApi': {
        // 本地
        target: process.env.VUE_APP_SRC,
        changeOrigin: process.env.NODE_ENV==="development"?true:false, // 开发环境才开启反向代理,生产环境不开启
        pathRewrite: {
          // 把匹配到的/localApi这段开头 替换成 /
          '^/localApi': '/'
        }
      },
    }
  },
}

  

posted @ 2021-06-18 17:17  chicidol  阅读(29)  评论(0编辑  收藏  举报