vue 之 axios的使用(拦截器)
为什么选择axios?作者推荐和功能特点
作者在2016年11月发微博:vue-resource不在为官方推荐的ajax库,推荐使用axios
功能特点:
在浏览器中发送XMLHttpRequests请求
在node.js中发送http请求
支持Promise API
拦截请求和响应
转换请求和响应数据
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[,data[,config]])
axios.patch(url[,data[,config]])
安装axios
1 | npm i axios -S |
常见用法
1 2 3 4 5 | axios({ url: '请求地址' ,<br> method: 'get' //默认是get请求,可以不写 }).then(res=>{ console.log(res) })<br><br><br>axios.post(url,{name: '' ,age:18}) |
axios并发请求 axios.all
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | axios.all( [ axiost({ url: '' }), axios({ url: '' , params :{ type: '' , page:5 } }) ] ).then(result=>{ }) <br><br>延展写法,这里可以替换上面代码的then部分<br>.then(axios.spread(res1,res2)=>{<br> console.log(res1);<br> console.log(res2);<br>}) |
axios全局配置,其他请查看官网
1 2 | axios.defaults.baseURL = 'http://123.123.123:8080' axios.defaults.timeout = 5 |
axios 的实例和模块封装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 在main.js里面写,请看后面,是一定要封装的requrest.js<br><br> const instance1 = axios.create({ baseURL: 'http://123.123.123:8000' , timeout:5000 }) instance1({ url: '/home/mltidata' }).then(res=>{ }) instance1({ url: '/home/data' , params :{ name: '张三' , age: '18' } })<br><br> const instance2 = axios.create({<br> baseURL: 'http://345.345.345:8000' ,<br> timeout:10000,<br> headers:{}<br>}) |
request.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import axios from 'axios' export function request(config,success,failure){ //1.创建axios的实例 const instance = axios.create({ baseURL: 'http://123.123.123:8000' , timeout:5000 }) } //发送真正的网络请求 instance(config).then(res=>{ success(res) }). catch (err=>{ failure(err) }) //调用 request({url: "" },res=>{},err=>{}) |
最终的解决方案(推荐使用)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | export function request(config) { return new Promise((resolve,reject)=>{ //1.创建axios的实例 const instance = axios.create({ baseURL: 'http://123.123.123:8000' , timeout:5000 }) instance(config).then(res=>{ resolve.log(res) }). catch (err=>{ reject(err) }) }) }<br><br> //调用<br>request({url}).then(res=>{<br><br>}).catch(err=>{<br><br>}), |
最终解决方案简化版
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | export function request(config) { //1.创建axios的实例 const instance = axios.create({ baseURL: 'http://123.123.123:8000' , timeout:5000 })<br><br> 2.axios的拦截器<br><br> <br> 3.发送真正的网络请求 return instance(config) } //调用 request({url}).then(res=>{ }). catch (err=>{ }), |
如何使用拦截器?
使用场景:
1.比如config中一些信息不符合服务器的要求
2.比如每次发送网络请求时,都希望在界面中显示一个请求的图标
3.某些网络请求(比如登录(token),必须携带一些特殊的信息)
axios提供了拦截器,用于每次发送请求或者得到响应后,进行对应的处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //配置请求和响应拦截 instance.interceptors.request.use(config=>{ console.log( '来到了request拦截success中' ); return config },err=>{ console.log( '来到了request拦截器failure中' ) return err }) instance.interceptors.response.use(response=>{ console.log( '来到了response拦截success中' ); return response.data },err=>{ console.log( '来到了response拦截器failure中' ) return err }) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2018-02-28 oracle 之 定时任务,存储过程和游标等语法案例