Vue 网络请求模块封装 (axios)
2024-09-21
47
1. vue 中如何发送网络请求 ?2. 在 vue 脚手架中使用 axios3. 请求配置4. 配置默认值5. 网络请求模块封装
1. vue 中如何发送网络请求 ?
选择一: XMLHttpRequest (XHR)
这种方式配置和调用方式都非常混乱,编码也很复杂,所以真实开发中都不会使用 XHR 这种方式
选择二: jQuery-Ajax
如果项目中使用了的 jquery,那么我们一般都会使用 jquery 自带的 ajax 封装,也就是 $.ajax({})
但是,要明确一点,在 vue 整个开发中都是不需要使用 jQuery 了,如果在 vue 中还要使用 $.ajax 则使用引入 jquery。jquery 的代码达到 1w+ 行,vue 代码才 1w+ 行,完全没有必要为了网络请求引用这个重量级框架
选择三: axios
在 Vue1.x 的时候,Vue 官方推出了 vue-resource,它的体积相对于 jquery 小了很多,在 Vue2.x 推出后,去掉了 vue-resource,并且 vue 作者尤雨溪推荐使用 axios
2. 在 vue 脚手架中使用 axios
axios 中文文档: http://www.axios-js.com
安装 axios 包
npm install axios
在 main.js 中导入 axios
import axios from 'axios';
3. 请求配置
当 url 不是一个绝对 URL 时,baseURL 才会自动加在 url 前面
序号 | 参数 | 描述 |
---|---|---|
1 | url | 接口地址 |
2 | baseURL | 接口根路径 |
3 | method | 请求类型,不区分大小写 |
4 | params | URL 查询对象 |
5 | data | 请求体数据,存放 POST 数据的地方 |
6 | headers | 请求头 |
7 | timeout | 超时时间,单位: 毫秒,请求超过时间时请求将被中断 (0 代表 不超时) |
常用请求配置参数
axios({
url: "/goods/getLists",
method: "post",
baseURL: "http://shop.cy",
params: {
id: 10
},
data: {
name: 'liang'
},
headers: {
token: "abcdef"
},
timeout: 5000
})
4. 配置默认值
全局的 axios 默认值
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.timeout = 5000;
自定义实例默认值
当前接口地址是多个域名时,定义全局配置默认值显然是不合适的,因为接口前缀不同,此时可以定义多个 axios 实例
// 创建 axios 实例
const instance = axios.create({
baseURL: "http://shop.cy",
timeout: 500
})
// 发送网络请求
instance(config).then(res => {
console.log('res', res)
})
5. 网络请求模块封装
创建文件: src/network/request.js
import axios from 'axios';
export default (config) => {
// 创建 axios 实例
const instance = axios.create({
baseURL: "http://shop.cy",
timeout: 1
})
// 响应拦截器
instance.interceptors.response.use(response => {
// 响应成功
return response.data; // 返回接口数据
}, error => {
// 响应错误
return Promise.reject(error);
});
return instance(config)
};
使用示例
更新于:2个月前request({
url: '/test/req',
params: {
id: 200
}
}).then(res => {
console.log('res', res)
}).catch(err => {
console.log('err', err)
})
赞一波!
相关文章
- 【说站】python模块如何传入参数
- 【说站】python模块的介绍和导入
- 【说站】python怎么导入pygame模块
- 【说站】python thread模块如何实现多线程
- 源码多多进鱼带VUE源码任务悬赏源码安装说明文档
- 【说站】php安装mysql扩展模块
- 什么是VoidZero?Vue和Vite之父尤雨溪成立的技术公司
- Vue 3.5引入新特性 还有与SSR相关的改进
- 【说站】python模块中判断全局变量的赋值
- 【说站】Python有哪些命令行参数解析模块?
- 【说站】python vim模块的函数接口
- uniapp 网络请求封装【luch-request 3.x】
- Vue CLI 2 脚手架 TabBar 组件封装
- Vue 的认识、特点介绍、安装方式
- vue-router 的基本使用
- 基于Vue的免费开源admin管理后台框架
- 微擎安装模块时提示 Failed to connect to we7.rewlkj.com port 80: Timed out
- C#检测网络端口是否被占用的参考代码
- vue cli 项目启动 HBuilderX 编辑器的使用
- vue cli 中的 import 和 export
文章评论
评论问答