目录
一、选择什么网络模块?
@H_404_0@发送网络请求的方式有很多,下面来简单介绍一下: @H_404_0@1、传统的Ajax是基于XMLHttpRequest(XHR) @H_404_0@2、jQuery - Ajax @H_404_0@为什么不适用jQuery的Ajax? @H_404_0@在vue开发中不需要使用jQuery,因为jQuery很重量级。 @H_404_0@3、vue官方在Vue1.x的时候,推出了Vue-resource。 @H_404_0@Vue-resource角jQuery轻便很多,但在vue2.x之后,尤雨溪对Vue-resource不维护了,简言之,就是弃用了。 @H_404_0@4、尤雨溪推荐使用axios。二、axios功能特点
三、axios支持多种请求方式
axios(config)
axios.request(config)
axios.get(url,[,config])
axios.delete(url,config])
axios.head(url,config])
axios.post(url,data[,config]])
axios.put(url,config]])
axios.patch(url,config]])
四、发送并发请求
@H_404_0@有的时候,会同时发送多个请求。 @H_404_0@使用axios.all,可以放入多个请求的数组。 @H_404[email protected]([])返回的是一个数组,使用axios.spread可以将数组[res1,res2]展开为res1和res2。import axios from 'axios'
export default {
name: 'app',
created(){
axios.all([axios.get('http://127.0.0.1:8080/getUserList'),
axios.get('http://127.0.0.1:8080/getUserPage',{
params: {pageNum: 1, pageSize: 10}
})
]).then(axios.spread((res1,res2) => {
console.log(res1)
console.log(res2)
}))
}
}
五、全局配置
import axios from 'axios'
export default {
name: 'app',
created(){
// 提取全局配置
axios.defaults.baseURL = 'http://127.0.0.1:8080'
axios.all([axios.get('/getUserList'),
axios.get('/getUserPage',res2) => {
console.log(res1)
console.log(res2)
}))
}
}
六、创建axios实例
const instance1 = axios.create({
baseURL: 'http://127.0.0.1:8080',
timeout: 5000
})
instance1({
url: '/home/getUserList'
}).then(res => {
console.log(res);
})
instance1({
url: '/home/getUserPage',
params: {
type: 'pop',
page: 1
}
}).then(res => {
console.log(res);
})
const instance2 = axios.create({
baseURL: 'http://127.0.0.1:8081',
timeout: 10000,
// headers: {}
})
七、常见的配置选项
@H_404_0@1、请求地址 @H_404_0@\url:'http://127.0.0.1:8080/getUserList'
@H_404_0@2、请求类型
@H_404_0@method:'get'
@H_404_0@3、请求路径
@H_404_0@baseURL:'http://127.0.0.1:8080'
@H_404_0@4、请求前的数据处理
@H_404_0@transformRequest:[function(data){}],
@H_404_0@5、请求后的数据处理
@H_404_0@transformResponse: [function(data){}],
@H_404_0@6、自定义的请求头
@H_404_0@headers:{'x-Requested-With':'XMLHttpRequest'},
@H_404_0@7、URL查询对象
@H_404_0@params:{ id: 1 },
@H_404_0@8、查询对象序列化函数
@H_404_0@paramsSerializer: function(params){ }
@H_404_0@9、request body
@H_404_0@data: { key: 'aa'},
@H_404_0@10、超时设置s
@H_404_0@timeout: 5000,
@H_404_0@11、跨域是否带Token
@H_404_0@withCredentials: false,
@H_404_0@12、自定义请求处理
@H_404_0@adapter: function(resolve,reject,config){},
@H_404_0@13、身份验证信息
@H_404_0@auth: { uname: '',pwd: '12'},
@H_404_0@14、响应的数据格式 json / blob /document /arraybuffer / text / stream
@H_404_0@responseType: 'json',
八、axios的封装
import axios from 'axios'
export default function axios(option){
return new Promise((resolve,reject) => {
//1.创建sxios实例
const instance = axios.create({
url: 'api',
timeout: 5000,
headers: ''
})
//2.传入对象进行网络请求
instance(option).then(res => {
resolve(res)
}).catch(err => {
reject(err)
})
})
}
九、封装一个request函数
1、传入回调函数
export function request(config, success, failure) {
// 1.创建axios的实例
const instance = axios.create({
baseURL: 'http://127.0.0.1:8080',
timeout: 5000
})
// 发送真正的网络请求
instance(config)
.then(res => {
success(res);
})
.catch(err => {
failure(err)
})
}
@H_404_0@调用封装好的request模块
import {request} from "./network/request";
request({
url: '/home/multidata'
}, res => {
console.log(res);
}, err => {
console.log(err);
})
2、传入一个参数进行回调
export function request(config) {
// 1.创建axios的实例
const instance = axios.create({
baseURL: 'http://127.0.0.1:8080',
timeout: 5000
})
// 发送真正的网络请求
instance(config.baseConfig)
.then(res => {
config.success(res);
})
.catch(err => {
config.failure(err)
})
}
import {request} from "./network/request";
request({
baseConfig: {
},
success: function (res) {
},
failure: function (err) {
}
})
3、Promise用法
export function request(config) {
return new Promise((resolve, reject) => {
// 1.创建axios的实例
const instance = axios.create({
baseURL: 'http://127.0.0.1:8080',
timeout: 5000
})
// 发送真正的网络请求
instance(config)
.then(res => {
resolve(res)
})
.catch(err => {
reject(err)
})
})
}
request({
url: '/home/multidata'
}).then(res => {
console.log(res);
}).catch(err => {
// console.log(err);
})
4、简化Promise
export function request(config) {
return new Promise((resolve,
timeout: 5000
})
// 发送真正的网络请求
return instance(config)
})
}
十、axios中的拦截器
@H_404_0@请求拦截的作用是什么?import axios from 'axios'
export function request(config) {
// 1.创建axios的实例
const instance = axios.create({
baseURL: 'http://127.0.0.1:8080',
timeout: 5000
})
// 2.axios的拦截器
// 2.1.请求拦截的作用
instance.interceptors.request.use(config => {
// console.log(config);
return config
}, err => {
// console.log(err);
})
// 2.2.响应拦截
instance.interceptors.response.use(res => {
// console.log(res);
return res.data
}, err => {
console.log(err);
})
// 3.发送真正的网络请求
return instance(config)
}
十一、关注公众号哪吒编程,回复1024,获取Java学习资料,还有不定期的送书活动
- 数据结构和算法基础
- 人工智能数据基础与Python机器学习实战
- 机器学习数学基础
- node.js入门指南
为什么80%的码农做不了架构师?>>>
Java专栏目录 | 点击这里
@H_404_0@版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。