axios、axios二次封装、api解耦

06-01 1125阅读

本文章主要讲解项目中axios的封装问题,这一块知识点是必须拿下的。

目录

一、axios基础使用

1、下载axios

2、引入axios

3、使用axios发送请求

4、举例 

二、axios二次封装【必须掌握,公司里必用到】

1、为什么要进行二次封装?

2、二次封装步骤

①新建文件request/request.js

②编写js代码

3、使用二次封装发送axios请求

4、注意

三、api解耦

1、什么是api解耦?

2、api解耦步骤

①新建文件api/xxx.js

②编写代码

③使用api

3、api解耦的重要性

结语


一、axios基础使用

1、下载axios

npm install axios

2、引入axios

import axios from 'axios'

3、使用axios发送请求

axios、axios二次封装、api解耦

4、举例 

生成情话的后端接口https://api.xygeng.cn/one

我们使用axios往这个接口发送请求,就会获得一句情话。

//引入axios
import axios from 'axios'
//使用axios发送请求到后端接口,并获取返回的数据
axios({
  url:"https://api.xygeng.cn/one",
  method:"get"
}).then(res=>{
  //res:后端返回给前端的数据
  console.log(res.data.data);//res.data.data是里面的那句情话
})

运行结果:

axios、axios二次封装、api解耦

二、axios二次封装【必须掌握,公司里必用到】

1、为什么要进行二次封装?

        因为上面的那个接口https://api.xygeng.cn/one 的公共部分是https://api.xygeng.cn,也就是说前端项目的其他地方发送的axios请求,也会包含这个公共部分,因此需要提取出来。

        如果不提取出来,可以想象一下,我们有几百个地方发送的axios都包含了这个公共部分https://api.xygeng.cn,如果哪天我们的后端服务器换了,我们就需要手动改几百处,实在是太麻烦。

        综上,我们要进行axios的二次封装,即:将axios请求的url的公共部分提取出来。

2、二次封装步骤

①新建文件request/request.js

axios、axios二次封装、api解耦

②编写js代码

//1、导入axios
import axios from 'axios'
//2、创建axios对象
const service = axios.create({
    //axios请求的基础链接,只有换后端服务器时(如本地项目部署到云服务器),才会改动这个
    baseURL:'https://api.xygeng.cn'
});
//3、给axios对象,设置【请求拦截器】,前端每次给后端发送数据时要做的事
service.interceptors.request.use(config => {
    return config;
},error => {
    Promise.reject(error);
})
//4、给axios对象,设置【响应拦截器】,后端响应给前端数据时要做的事
service.interceptors.response.use(
    (response) => {
        return response.data;
    },
    error => {
        return Promise.reject(new Error(error.response.data))
    }
)
//5、暴露axios对象service
export default service

请求拦截器:常常每个axios请求url前,都会携带token。

响应拦截器:常用来判断code码。 

3、使用二次封装发送axios请求

//导入刚才封装的axios对象
import request from '@/request/request'
//使用axios对象发送请求
request({
  url:"/one",//此时URL公共前缀就不用写了
  //method:"get"
}).then(res=>{
  console.log(res.data);//此时res.data就是那句情话
})

查看运行结果

axios、axios二次封装、api解耦

4、注意

axios、axios二次封装、api解耦

理解:

那句情话始终都是【后端返回数据.data.data】,就看上图中的res和response怎么倒腾了。

而且此时response.data充当res。

如果响应拦截器中,return的是response的话,那么response就充当res。说白了就是return的是啥,啥就充当res。

比喻:

就是将js代码,写入了那个总的js文件中。说白了就是将碗里的米饭,放回锅里了,但是无论如何,我都吃锅+碗的,所以总数不变,功能不变。 

三、api解耦

1、什么是api解耦?

        我们很多地方可能都要发送同一个axios请求,此时我们总不能每次都重复写一遍代码吧,因此需要将某个请求提取到一个js文件中。

2、api解耦步骤

①新建文件api/xxx.js

axios、axios二次封装、api解耦

②编写代码

import request from '@/request/request'
//编写方法“获取情话”,并将其暴露出去
export function getQinghua(){
    return request({
        url:'/one'
    })
    /* 
    或者写成
    return request.get('/one')
    */
}
//如果想编写其他方法,可以同上,继续暴露出去。

③使用api

//导入自定义api
import { getQinghua } from "@/api/qinghua";
//使用api发送请求
getQinghua().then(res=>{
  console.log(res.data);//此时这还是那句情话
})

运行效果:

axios、axios二次封装、api解耦

3、api解耦的重要性

axios、axios二次封装、api解耦

以后项目中,肯定需要往后端发送一大堆axios请求,我们此时可以把这些axios请求写成一个个api,并按照一定规律存放在不同的js文件中即可。 

结语

以上就是axios、axios二次封装、api解耦的全部内容,介绍的比较详细,喜欢的话留下一个关注吧~~

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码