为什么要二次封装axios
先了解一下axios是什么?
是一个基于promise的可用在浏览器和node.js中的异步通信框架,主要作用是实现AJAX异步通信;在我们做Vue开发时,vue明确界限就是处理Dom事件,不具备异步通信功能,所以就需要Axios来进行前端异步请求的第三方库
所以当我们用到axios来请求数据时
1、我们会进行二次封装来进行一些,我们自己需要做的事情
//对于axios二次封装
import axios from "axios";
//1.理由axios对象的方法create,去创建一个axios实例
//2:requests就是axios,只不过稍微配置一下
const requests = axios.create({
//配置对象
//基础路径,发请求时直接自带api
baseURL:/api,
//请求超时的时间5s
timeout:5000
})
//请求拦截器:在发送请求之前,请求拦截器可以检测到,可以在请求发出前做一些事
requests.interceptors.request.use((config)=>{
//config:配置对象,对象里面有一个属性很重要,headers请求头
return config
})
//响应拦截器
requests.interceptors.response.use((res)=>{
//响应成功的回调函数:服务器响应数据回来后,响应拦截器可以检测到并做一些事情
return res.data;
},(error)=>{
//响应失败的回调函数
return Promise.reject(new Error(faile));
})
//暴露requests
export default requests;
2、在小型项目中,我们完全在组件的生命周期函数中发送请求,但当项目越来越大时,接口几十上百个时,一旦我们需要修改接口地址时,就只能挨个挨个查找并修改,所以我们就需要统一管理接口地址(api)
//当前这个模块:API进行统一管理
import requests from "./request";
//模拟axios发送请求
//三级联动接口
// 地址/api/product/getBaseCategoryList get请求 无参数
export const reqCategoryList = ()=>{
requests({
//request中已经配置了基础路径,自带api
url:/product/getBaseCategoryList,
method:get
})
}
测试前:这里直接请求会出现一个跨域问题,因为在咱们前台本地服务器上没有我们请求的接口,应该在我们的config.js文件中配置代理跨域,此处不做详细介绍
可了解
//在入口文件中进行测试
import {reqCategoryList} from @/api
reqCategoryList()
以上文档仅作为个人练习,加强记忆
下一篇:
海外新冠疫情 API数据接口
