前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue 网络请求模块封装 (axios)

Vue 网络请求模块封装 (axios)

作者头像
很酷的站长
发布2022-12-28 15:49:52
1K0
发布2022-12-28 15:49:52
举报
文章被收录于专栏:站长的编程笔记
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 包

代码语言:javascript
复制
npm install axios

在 main.js 中导入 axios

代码语言:javascript
复制
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 代表 不超时)

常用请求配置参数

代码语言:javascript
复制
axios({
url: "/goods/getLists",
method: "post",
baseURL: "http://shop.cy",
params: {
id: 10
},
data: {
name: 'liang'
},
headers: {
token: "abcdef"
},
timeout: 5000
})
4. 配置默认值

全局的 axios 默认值

代码语言:javascript
复制
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.timeout = 5000;

自定义实例默认值

当前接口地址是多个域名时,定义全局配置默认值显然是不合适的,因为接口前缀不同,此时可以定义多个 axios 实例

代码语言:javascript
复制
// 创建 axios 实例
const instance = axios.create({
baseURL: "http://shop.cy",
timeout: 500
})
// 发送网络请求
instance(config).then(res => {
console.log('res', res)
})
5. 网络请求模块封装

创建文件: src/network/request.js

代码语言:javascript
复制
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)
};

使用示例

代码语言:javascript
复制
request({
url: '/test/req',
params: {
id: 200
}
}).then(res => {
console.log('res', res)
}).catch(err => {
console.log('err', err)
})
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. vue 中如何发送网络请求 ?
  • 2. 在 vue 脚手架中使用 axios
  • 3. 请求配置
  • 4. 配置默认值
  • 5. 网络请求模块封装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档