axios总结 异步请求骚操作

本文详细介绍了Axios库的基本使用方法及高级特性,包括GET、POST等HTTP请求方式的多种参数传递方式,响应结果的解析,全局配置设置,以及请求和响应拦截器的使用。

概述

三方调用方式js库,基于promise,强力max。

基本用法

axios.get(url).then(ret =>{
	console.log(ret.data);//data属性固定写法
})

常用API

POST / GET / PUT / DELETE
一、GET

//url传递参数
axios.get('***?id=123').then(ret => {
	console.log(ret.data);
})

//restful方式传参,一系列传参方式改变,后台都需要改动
axios.get('***/123').then(ret => {
	console.log(ret.data);
})

//params方式
axios.get('***',{
	params:{
		id:'123'
	}
}).then(ret => {
	console.log(ret.data);
})

二、POST
默认传递json格式

//通过选项传递参数
axios.post('***',{
	name:'abc',
	pwd:'123'
}).then(ret => {
	console.log(ret.data);
})

//通过urlSearchParams传递参数
//(application/x-www-form-urlencoded)
const params = new urlSearchParams();
params.append('name','abc');
params.append('pwd','123');
axios.post(url,params).then(ret => {
	console.log(ret.data);
})

其他两个delete\put不说了,跟get\post类似,百度吧。。。敲不动了

响应结果

主要属性:
data 实际响应返回数据
headers 响应头信息
status 响应状态码
statusText 响应状态信息

axios.post(url).then(ret => {
	console.log(ret);
})

打印如下:
ret返回结果

全局配置

超时时间
axios.defaults.timeout = 3000 ;
默认地址
axios.defaults.baseURL = ‘******’;

axios.defaults.baseURL = ' http://localhost:8888';
axios.get('axios-url').then(ret => {//url前面的省略
	console.log(ret);
})

设置请求头
axios.defaults.headers[‘mytoken’] = ‘******’;

//跨域的请求头需要后台配置
axios.defaults.headers['mytoken'] = 'helloworld';
axios.get(url).then(ret => {
	console.log(ret);
})

axios拦截

一、请求拦截器
aioxs----->拦截器----->服务器

//添加请求拦截器
axios.interceptors.request.use(function(config){
	console.log(config.url)
	//在请求发出之前进行一些信息配置
	config.headers.mytoken = 'hellokugou'
	return config;
},function(error){
	//处理相应错误信息
})
axios.get(url).then(function(data){
	console.log(data);
})

data打印结果

二、响应拦截器
axios<-----拦截器<-----服务器
数据返回之前进行加工处理

//添加请求拦截器
axios.interceptors.respons.use(function(res){
	console.log(res)
	var data = res.data;//把数据处理了一下
	return data;
},function(error){
	//处理相应错误信息
})
axios.get(url).then(function(data){
	console.log(data);//不需要再通过.data获取数据,可以直接取到
})
检查以下代码问题:<template> <div class="article-detail-page"> <nav class="nav"><span @click="$router.back()" class="back"><</span> 面经详情</nav> <header class="header"> <!-- articles.stem 渲染不出来 --> <h1>1{{ articles.stem }}</h1> <p>{{ articles.createdAt }} | 315 浏览量 | 44 点赞数</p> <p> <img src="http://teachoss.itheima.net/heimaQuestionMiniapp/%E5%AE%98%E6%96%B9%E9%BB%98%E8%AE%A4%E5%A4%B4%E5%83%8F%402x.png" alt="" /> <span>青春少年</span> </p> </header> <main class="body"> 虽然百度这几年发展势头落后于AT, 甚至快被京东赶上了,毕竟瘦死的骆驼比马大, 面试还是相当有难度和水准的, 一面..... </main> </div> </template> <script> // 请求地址: https://mock.boxuegu.com/mock/3083/articles/:id // 请求方式: get // import axios from 'axios' export default { name: "ArticleDetailPage", data() { return { articles:[ { id:'41156', createdAt: '2022-01-20', creatorName:'xiao仙女', stem:'老生常谈H5秒开', content:'实现 H5 应用的“秒开”体验,并确保在发布新版本时用户能够及时加载到最新的内容。这涉及到前端性能优化、缓存策略以及版本控制等多个方面', creatorAvatar:'http://teachoss.itheima.net/heimaQuestionMiniapp/%E5%AE%98%E6%96%B9%E9%BB%98%E8%AE%A4%E5%A4%B4%E5%83%8F%402x.png', likeCount:'24', views:'212', }, { id:'41157', createdAt: '2023-01-22', creatorName:'青春, 那么', stem:'百度前端面经', content:'虽然百度这几年发展势头落后于AT,甚至快被京东赶上了,毕竟瘦死的骆驼比马大,面试还是相当有难度和水准的。一面1.询问你的项目经验、学习经历、主修语言(照实答)2.解释ES6的暂时性死区( let 和 var 的区别)3.箭头函数、闭包、异步(老生常谈,参见上文)4.高阶函数(呃……我真不太清楚这是啥,听起来挺像闭包的)5.求N的阶乘末尾有多少个0,在线码代码或讲思路(求因数,统计2、5、10的个数', creatorAvatar:'http://teachoss.itheima.net/heimaQuestionMiniapp/%E5%AE%98%E6%96%B9%E9%BB%98%E8%AE%A4%E5%A4%B4%E5%83%8F%402x.png', likeCount:'44', views:'315', }, { id:'41158', createdAt: '2024-08-20', creatorName:'前端琳琅阁ing', stem:'cesium中geojson数据渲染', content:'使用Cesium.GeoJsonDataSource.load(file,option)加载geojson文件、或者是geojson的数据,遍历每个区域使用viewer.entities.add()用于添加中心点的图标。使用viewer.entities.remove(entity)可以移除实体。', creatorAvatar:'http://teachoss.itheima.net/heimaQuestionMiniapp/%E5%AE%98%E6%96%B9%E9%BB%98%E8%AE%A4%E5%A4%B4%E5%83%8F%402x.png', likeCount:'66', views:'216', } ] } }, created(){ console.log(this.$route.params.id) this.articles = this.articles.filter(item => this.$route.params.id === item.id ) console.log(this.articles) } } </script> <style lang="less" scoped> .article-detail-page { .nav { height: 44px; border-bottom: 1px solid #e4e4e4; line-height: 44px; text-align: center; .back { font-size: 18px; color: #666; position: absolute; left: 10px; top: 0; transform: scale(1, 1.5); } } .header { padding: 0 15px; p { color: #999; font-size: 12px; display: flex; align-items: center; } img { width: 40px; height: 40px; border-radius: 50%; overflow: hidden; } } .body { padding: 0 15px; } } </style>
最新发布
07-25
Axios是一个流行的JavaScript库,用于浏览器和Node.js中的HTTP请求。它提供了简洁的API来处理异步数据通信,并且支持Promise链式调用,使得处理网络请求变得更加容易。 要在Axios中配置异步请求,首先你需要安装Axios库(如果尚未安装): ```bash npm install axios # 或者在ESM环境中 import axios from 'axios'; ``` 接下来,你可以创建一个新的实例并设置一些全局配置选项,例如超时、默认 headers 等: ```javascript const instance = axios.create({ baseURL: 'https://api.example.com', // API基础URL timeout: 5000, // 请求超时时间,单位为毫秒 headers: { 'Content-Type': 'application/json', Authorization: 'Bearer your_token' } }); ``` 然后,你可以根据需要发送GET、POST、PUT等不同类型的请求: ```javascript // 发送GET请求 instance.get('/users') .then(response => console.log(response.data)) .catch(error => console.error(error)); // 发送POST请求 instance.post('/items', { name: 'New Item' }) .then(response => console.log(response.status)) .catch(error => console.error(error)); ``` 如果你想对每个请求进行额外的定制,也可以传递配置对象作为参数: ```javascript instance.get('/users', { params: { id: 1 } }) .then(response => console.log(response.data)) .catch(error => console.error(error)); ``` Axios还提供了一些中间件插件功能,如拦截器(interceptors),可以在请求发送前或返回后执行自定义操作: ```javascript instance.interceptors.request.use(config => { // 在发送请求之前做些什么 return config; }, error => { // 对请求错误做些什么 return Promise.reject(error); }); instance.interceptors.response.use(response => { // 对响应结果做些处理 return response; }, error => { // 对响应错误做些处理 return Promise.reject(error); }); ``` 以上就是如何使用Axios配置基本的异步请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值