为什么需要进行二次封装axios?

向服务器发起请求、获取服务器数据方式:XMLHttpRequest、fetch、JQ、axios等

二次封装axios主要是为了用到请求拦截器和响应拦截器

拦截请求:可以在请求之前处理一些业务(比如为每个请求带上相应的参数,时间戳等)

拦截响应:可以在服务器返回数据之后处理一些事情(比如对返回的状态进行判断,token是否过期等)

---src目录下的API文件夹,一般关于axios二次封装的文件

封装过程: 

1、先安装axios,在终端输入cnpm install --save axios   

(没有安装淘宝镜像先安装,命令为npm install -g cnpm --registry=https://registry.npm.taobao.org

为什么需要进行二次封装axios?_第1张图片

 2、安装完可在package.json中查看是否安装成功

3、在request.js文件下对axios进行二次封装

//对于axios进行二次封装
import axios from "axios"
//引入进度条
import nProgress from "nprogress"
//引入进度条样式
import "nprogress/nprogress.css"
//start:进度条开始 done:进度条结束

//1:利用axios对象的方法create,去创建一个axios实例
//2:requests就是axios,只不过稍微配置了一下
const requests = axios.create({
    //配置对象
    //基础路径,发起请求的时候,路径当中会出现api
    baseURL: "/api",
    //代表请求超时的时间5s
    timeout: 5000
})

//请求拦截器:在发请求之前,请求拦截器可以检测到,可以在请求发出去之前做一些事情
requests.interceptors.request.use((config)=>{
    //进度条开始动
    nProgress.start()
    //config:配置对象,对象里面有一个属性很重要,headers请求头
    return config
})

//响应拦截器
requests.interceptors.response.use((res)=>{
    //进度条结束
    nProgress.done()
    //成功的回调函数:服务器响应数据回来以后,相应拦截器可以检测到,可以做一些处理
    return res.data
},(error)=>{
    //相应失败的回调函数
    return Promise.reject(new Error('faile'))
})

//对外暴露
export default requests

你可能感兴趣的:(前端,vscode,javascript,vue.js)