Vue项目中封装axios

  • A+
所属分类:Web前端
摘要

我们写Vue项目的时候一定会有一些操作,我们会对数据进行处理,那么我们就需要自己封装一个发送请求的函数;在请求之前,或者在响应之前,那么我们就需要处理一下:

我们写Vue项目的时候一定会有一些操作,我们会对数据进行处理,那么我们就需要自己封装一个发送请求的函数;在请求之前,或者在响应之前,那么我们就需要处理一下:

// 导出一个可以发请求的函数 import axios from 'axios' /** *根据自己的项目,进行导入,需要回跳就导入router *需要进行本都存储,那么就导入 自己写好的本地存储的js * */   // 创建axios实例 const instance = axios.create({ //进行配置 baseUrl:null }) //请求拦截器 instance.interceptors.request.use(config=>{        console.log(config)        //请求之前做什么事情,比如加请求头 config.header.自定义 = 'XXX'
    //事情做完之后必须有返回值
 return config
},err=>Promise.reject(err)) //响应拦截器 instance.interceptors.response.use(res=>{ //响应,res为响应的数据 //我们可以捕获数据,进行处理 try{ //看数据结构,在点,这样拿过来数据就可以直接用 return res.XXX }catcf(e){ //捕获到异常 //把原来的数据原封不动拿过来 return res } },err=>{ // 响应失败 // 响应失败做一些处理
 // 处理完也要返回一个promise
 return Promise.reject(err) } /** * *因为我们本意就是导出一个能够发请求的函数,之前的处理是拿过来数据**就可以直接用 * */ export default (url,method,data) =>{ // 上面我们封装好了一个axios,那么我们用这个发请求 instance({ url, method, // 数组中可以写表达式,结果必须为字符串 处理请求方式,无论大小写,统一为小写 [method.toLowerCase() === 'get'? 'params' : 'data']:data }) }

在main.js中这么引入:

import http from '@/axios.js'  //加入到Vue的原形上,这样可以this拿到  Vue.prototype.$http = http