个人技术总结——Axios的使用
Axios
目录
- Axios
- 1.技术概述
- 2.技术详述
- 2.1安装方式
- 2.2Axios的请求方法
- 2.2.1get请求
- 2.2.2post请求
- 2.2.3put请求
- 2.2.4patch请求
- 2.2.5delete请求
- 2.2.6并发请求
- 2.3Axios实例
- 2.3.1axios全局配置
- 2.3.2axios实例配置
- 2.3.3直接在axios请求上配置
- 2.4拦截器
- 2.4.1请求拦截器
- 2.4.2响应拦截器
- 2.4.3移除拦截器
- 2.4.4错误请求
- 2.4.5取消请求
- 2.5学习后实践——request封装
- 3.总结
1.技术概述
axios全称:(ajax-I/O-system)是基于promise用于浏览器和node.js的http客户端,因此可以使用Promise API
ajax是异步网络请求,可以使页面无刷新请求数据,还可以防止CSRF(跨域请求伪造)。
实现ajax的方式有①jQuery封装ajax好用,但是没必要因为ajax引入jQuery框架②原生的XML HttpRequests的配置和调用方式都很繁琐,实现异步请求十分麻烦
所以选择学习使用axios。
2.技术详述
2.1安装方式
npm install axios
在vue项目中的main.js中引入axios
import axios from 'axios'
Vue.prototype.$axios = axios
在组件中使用axios
<script>
export default {
mounted(){
//直接使用方法
this.$axios.get('url').then(res=>{
//打印返回的数据
console.log(res);
})
}
}
</script>
2.2Axios的请求方法
2.2.1get请求
//请求格式类似于 http://localhost:8080/goods.json?id=1
//方法一:
//axios上有get this.$axios.get( 'url',{ params:{} } ).then(res=>{},err=>{})
this.$axios.get('url',{
params:{id: 1},
}).then(res=>{
console.log(res)
},err=>{
console.log(err)
})
//方法二:将请求类型写入
this.$axios({
method:'get',
url:'url',
params:{
id:1
}
}).then(res=>{
console.log(res)
},err=>{
console.log(err)
})
// 获取远端图片
this.$axios({
method:'get',
url:'http://bit.ly/2mTM3nY',
responseType:'stream'
}).then(res=> {
//对文件流进行写入
res.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
});
2.2.2post请求
- form-data表单提交,图片上传,文件上传时用到该类型比较多
- application/json 一般用于ajax异步请求
//方法一
this.$axios.post('url',{
id:1
}).then(res=>{
console.log(res)
},err=>{
console.log(err)
})
this.$axios({
method:'post',
url:'url',
data:{
id:1
}
}).then(res=>{
console.log(res)
},err=>{
console.log(err)
})
form-data请求
//写入要请求的参数
let data = {}
//使用FormData创建formdata实例
let formdata = new FormData()
for (let key in data){
//append为formdata添加属性
formdata.append(key,data[key])
}
this.$axios.post('/url',formdata).then(res=>{
console.log(res)
},err=>{
console.log(err)
})
2.2.3put请求
this.$axios.put('url',{
id:1
}).then(res=>{
console.log(res.data)
})
2.2.4patch请求
this.$axios.patch('url',{
id:1
}).then(res=>{
console.log(res)
})
2.2.5delete请求
this.$axios.delete('url',{
params:{
//比如要删除指定id的内容,也需要传递参数
id:1
}
}).then(res=>{
//删除成功会返回
console.log(res)
})
2.2.6并发请求
同时发送多个请求,并在then时统一处理res值 ,将请求写成数组形式进行请求
this.$axios.all([
//以数组形式请求
this.$axios.get('/url1',data1),
this.$axios.get('/url2',data2)
]).then(
//使用this.$axios.spread展开res
this.$axios.spread((res1,res2)=>{
console.log(res1)
console.log(res2)
})
)
2.3Axios实例
使用this.$axios.create创建axios实例对象
axios实例的常见配置
- baseURL:string写入请求的域名。
- timeout:以Number形式写入请求超时的时长,单位为ms,超过该时长则判断为超时
- url:请求路径
- method:请求方法
- headers:请求头。为Object对象。具体在http中进行学习
- params:请求参数,将参数拼接在url上面,类型为object,是明文请求
- data:请求参数,将参数放入请求体当中,类型为object,不是明文请求
let Axiosinstance = this.$axios.create({
baseURL: 'http://localhost:9090',
timeout: 2000
})
//Axiosinstance现在为axios实例对象了,可以调用axios上的方法
Axiosinstance.get('url').then(res=>{
console.log(res);
})
2.3.1axios全局配置
this.$axios.defaults.配置
//配置全局的超时时长
this.$axios.defaults.timeout = 2000;
//配置全局的基本URL
this.$axios.defaults.baseURL = 'http://localhost:8080';
2.3.2axios实例配置
首先创建一个实例this.$axios.create(),在实例身上加配置
let AxiosInstance = this.$axios.create();
AxiosInstance.defaults.timeout =3000
2.3.3直接在axios请求上配置
直接在axios请求上配置,采用key:value形式即可
this.$axios.get('url',{
timeout: 3000
params:{}
}).then()
若在多次对同一配置进行了多次设置,则遵循优先级:请求配置 > 实例配置 >全局配置
2.4拦截器
拦截器:在请求或响应被处理前拦截它们
2.4.1请求拦截器
interceptor意思为拦截器
this.$axios.interceptors.request.use
this.$axios.interceptors.request.use(config=>{
//请求前进行处理
return config
},err=>{
//请求错误处理
return Promise.reject(err)
})
//直接在axios实例上创建拦截器
let Axiosinstance = $axios.create();
Axiosinstance.interceptors.request.use(config=>{
return config
},function (error) {
// 对响应错误做点什么
return Promise.reject(error);
})
2.4.2响应拦截器
this.$axios.interceptors.response.use(res=>{
//请求成功对响应数据做处理
return res //该返回对象会传到请求方法的响应对象中
},err=>{
// 响应错误处理
return Promise.reject(err);
})
2.4.3移除拦截器
eject
let myInterceptor = this.$axios.interceptors.request.use(config=>{return config});
//取消拦截
this.$axios.interceptors.request.eject(myInterceptor);
let instance = this.$axios.interceptors.request.use(config=>{
config.headers = {
token: ''
}
return config
})
//取消拦截
this.$axios.interceptors.request.eject(instance);
2.4.4错误请求
this.$axios.get('/url').then(res={
}).catch(err=>{
//请求拦截器和响应拦截器抛出错误时,返回的err对象会传给当前函数的err对象
console.log(err);
})
2.4.5取消请求
let source = this.$axios.CancelToken.source();
this.$axios.get('url',{
cancelToken: source
}).then(res=>{
console.log(res)
}).catch(err=>{
//取消请求后会执行该方法
console.log(err)
})
//取消请求,参数可选,该参数信息会发送到请求的catch中
source.cancel('取消后的信息');
2.5学习后实践——request封装
在学习了axios的相关知识之后,进行了request的封装,方便请求。
```javascript
import axios from "axios";
// 创建axios,赋给变量service
const request = axios.create({
baseURL: 'http://49.233.xx/admin',//后端地址
timeout: 15000, // 超时
});
//添加请求拦截器
request.interceptors.request.use(
function (config) {
config.headers['Access-Control-Allow-Origin'] = '*';
//在发送请求之前做一些事情
return config;
},
function (error) {
//队请求错误做些什么
return Promise.reject(error);
}
);
//添加响应拦截器
request.interceptors.response.use(
function (response) {
//使用响应数据返回响应;
const data = response;
// 如果data.code
if (data) {
return Promise.resolve(data.data);
}
return response;
},
function (error) {
//使用响应错误返回
return Promise.reject(error);
}
);
// 将service 导出
export default request;
处理跨域问题也是非常重要的一部分

之后可以新建文件夹,按照封装好的格式封装api,非常的方便。

3.总结
学习 Axios 对于前端开发来说非常重要,Axios提供了一个简单、强大且跨平台的方式来处理 HTTP 请求和响应,简化了数据的发送与接收,并且支持高级功能如拦截器、请求取消等,有助于提高开发效率和应用性能。对Axios的学习理解还需要进一步应用,以更加熟悉 Axios的使用。
相关推荐
Vue cli3和flask搭建的个人博客项目,前后端分离,使用axios进行前后端通信,运用vuex、element-ui技术
基于Vue cli3和flask搭建的个人博客项目,前后端分离,使用axios进行前后端的通信,还运用了vuex、element-ui等,主要实现了登录注册、首页博客展示、添加博客、个人博客、我的收藏、评论博客等模块。非常适合python web开发全栈开发学习的练手项目。 Vue+Flask+mysql打造前后端分离的个人博客 基于Vue cli3和flask搭建的个人博客项目,前后端分离,使用axios进行前后端的通信,还运用了vuex、element-ui等,主要实现了登录注册、首页博客展示、添加博客、个人博客、我的收藏、添加评论、删除博客等模块,是一个小型项目 功能: ①用户管理,登录注册,前端传输时对密码的md5加密 ②首页博客展示,时钟展示 ③添加博客 ④添加博客评论(新增用户头像、图片的懒加载、节流与防抖) ⑤收藏博客 ⑥进入个人中心页面,查看个人发表的博客以及收藏的博客,对这些博客进行编辑删除处理等 前端代码在src文件夹下 后端代码在flask文件夹下,使用蓝图进行管理 数据库是mysql
luisa.dev:[WIP]极简个人网站
个人网站 极简主义的个人网站。 堆 React 具有样式化组件CSS-in-JS 使用react-router-dom的声明式路由 HTTP请求和REST API与axios一起使用
Axios使用指南[源码]
本文详细介绍了Axios的基本用法,包括如何导入Axios、发送GET和POST请求以及处理响应。Axios是一个基于Promise的HTTP客户端,适用于浏览器和Node.js环境。文章首先介绍了如何通过在线地址导入Axios,然后详细讲解了GET请求的两种参数传递方式:直接在URL中传递查询参数和通过params配置对象传递。接着,文章介绍了POST请求的发送方法,包括如何构造请求数据和目标URL。最后,文章详细说明了如何处理响应,包括成功响应的处理和错误响应的不同情况。通过本文,读者可以快速掌握Axios的基本使用方法,为前端开发中的数据交互提供便利。
personal_site:回购我的个人网站
个人网站 技术: 使用VUE.js构建。 使用Axios调用Medium。 居住
fetch与axios练习[项目源码]
本文通过实际代码示例展示了如何使用fetch和axios进行数据请求和处理。内容涵盖了使用axios和fetch分别进行GET和POST请求的实现,包括数据获取、列表展示、加载状态管理以及错误处理。示例中,axios用于获取新闻列表数据并展示,fetch用于获取相册列表数据并展示,同时还演示了如何使用这两种方法提交表单数据。文章提供了完整的HTML和JavaScript代码,适合初学者学习和练习fetch和axios的基本用法。


