Vue之封装请求详解

一. 创建vue脚手架项目

二. 安装axios  

三. 封装请求

大致思路:

就是新建一个request的文件夹,里面有两个js文件,分别是request.js和 api.js 

前者是配置请求的根路径和拦截器,后者调用前者,将所有的请求都写在这个api.js里面,其他页面使用的时候直接按需导入这个文件,即可获取到对应的数据

1. 在src下面新建一个request的目录

图片[1]-Vue之封装请求详解-智码星河

request.js

2. 在request里面新建一个request.js  这是根域名配置和请求拦截器的js文件

    在request.js里面写:

2.1 --- 先导入 axios :

   import axios from 'axios'

图片[2]-Vue之封装请求详解-智码星河

2.2 --- 再创建一个实例 :

const instace = axios.create({
baseURL:'http://kumanxuan1.f3322.net:8001',   //请求根路径
timeout: 5000 , //请求超时时间
})

2.3 --- 再写两个拦截器

// 请求拦截器
instace.interceptors.request.use(config=>{
return config
},err=>{
return Promise.reject(err)  //返回错误
})

// 响应拦截器
instace.interceptors.response.use(res=>{
return res
},err=>{
return Promise.reject(err)  //返回错误
})

2.4 --- 最后因为别的文件要使用 所以要导出 导出的就是声明的那个实例instace


//导出这个请求文件
export default instace;

至此,request.js 这个文件配置完毕 

api.js

3. 然后再在request目录下新建一个api.js
3.1 --- 因为这个文件要使用 request.js  所以先导入这个js 

 import request from './request.js';
图片[3]-Vue之封装请求详解-智码星河

3.2 --- 然后,写页面的各个请求  例如 首页数据的请求 每一个const 就是一个请求

export const GetHomeData = () => request.get('index/index')

因为要按需导出 所以要const命名 因为要导出 所以要 export 命名等于一个箭头函数  这个箭头函数里面的 request就相当于axios 然后 点get  括号里面直接是 请求的路径 因为在request.js里面配置好了根域名

图片[4]-Vue之封装请求详解-智码星河

致此 首页的请求就写完并按需导出了 
此时,只是在api.js里面写好了请求,但我们需要的数据要在首页:使用这个首页的请求,来到home.vue, 在首页文件 home.vue里面按需导入

4. 使用这个请求

4.1 ---- 在首页的js下先按需导入 api.js
import { GetHomeData } from '../request/api.js'

注意,按需导入需要一个大括号,里面是自定义的这个请求的名字  GetHomeData 

图片[5]-Vue之封装请求详解-智码星河

4.2 ---- 然后在方法或者周期函数里面就可以使用 这个请求首页数据的方法GetHomeData()这样导入以后 这个名字GetHomeData 就是一个请求首页数据的方法了 因为它本身就是一个箭头函数用的时候自然就是 方法的形式调用了 加小括号

图片[6]-Vue之封装请求详解-智码星河

到此,首页数据已经就显示了

这样封装后请求有参数的情况怎么写:
带参数的get请求:

api.js中:
get传参方式(params)是形参 固定的  后面的这个{params}是实参解构 页面使用这个请求的时候就要传入实参
export const GetsearchData = (params) => request.get('/list',{params})

图片[7]-Vue之封装请求详解-智码星河

调用的时候传入实参:

图片[8]-Vue之封装请求详解-智码星河

带参数的post请求(与get的区别是参数不需要解构,无大括号):

图片[9]-Vue之封装请求详解-智码星河

调用时传入实参同上。

封装了这个有什么好处?


就是你的每一个请求都写在api.js里面,每一个请求就是一个方法。

你用到这个请求的时候,就导入这个方法,然后在需要的地方调用这个方法即可获取到数据。


最终api.js里面应该是这样的

图片[10]-Vue之封装请求详解-智码星河

本站代码模板仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
文章版权声明 1 本网站名称: 智码星河
2 本站永久网址:https://wx234.cn
© 版权声明 文章版权归作者所有,未经允许请勿转载。

WX234.CN
喜欢就支持一下吧
点赞14 分享打赏
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

夸夸
夸夸
还有吗!没看够!
取消
昵称表情代码图片

    暂无评论内容