当前位置: 首页 > news >正文

axios的基本使用

axios

安装axios
npm install axios
使用时先导入
import axios from ‘axios’

axios请求方式

axios支持多种请求方式
axios(config)
axios.request(config)
axios.get(url[, config])
axios.head(url, [, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])

有时候我们可能同时发送两个请求
使用axios.all, 可以放入多个请求的数组.
axios.all([]) 返回的结果是一个数组,使用 axios.spread 可将数组 [res1,res2] 展开为 res1, res2

常见的配置选项

请求地址

  • url: ‘/user’
    请求类型
  • method: ‘get’
    请求路径
  • baseURL: ‘http://www.mt.con/api’
    请求前的数据处理
  • transformResponse: [function(data){}]
    自定义的请求头
  • headers:{’ x-Requested-With’: 'XMLHttpRequst '}
    URL查询对象
  • params:{id: 12}
    查询对象序列化函数
  • paramsSerializer: function(params){}
    requset body
  • data: { key: ‘aa’}
    超时设置
  • timeout: 1000

axios的创建实例

为什么要创建axios的实例呢

  • 当我们从axios模块中导入对象时 使用的实例是默认的实例
  • 当给该实例设置一些默认配置时 这些配置就被固定下来了
  • 但是后续开发中 某些配置可能会不太一样
  • 比如某些请求需要使用特定的baseURL或者timeout
  • 这个时候 我们就可以创建新的实例 并且传入属于该实例的配置信息
const instance = axios.create({baseURL: '....'
})instance.post('/...', {name: 'kobe',age: 24
}).then(res => {console.log('res: ', res)
})

请求与响应拦截器

axios的也可以设置拦截器:拦截每次请求和响应
axios.interceptors.request.use(请求成功拦截, 请求失败拦截)
axios.interceptors.response.use(响应成功拦截, 响应失败拦截)

axios.interceptors.request.use((config) => {console.log('请求成功拦截')return config
}, err => {console.log('请求失败拦截')return err
})axios.interceptors.response.use((res) => {console.log('响应成功拦截')return res.data
}, err => {console.log('响应失败拦截')
})

axios请求封装(基础版)

class MyRequest {constructor(baseURL, timeout=10000) {this.instance = axios.create({baseURL,timeout})}request(config) {return new Promise((resolve, reject) => {this.instance.request(config).then(res => {resolve(res.data)}).catch(err => {reject(err)})})}get(config) {return this.request({ ...config, method: 'get'})}post(config){return this.request({ ...config, method: 'post'})}
}export default new MyRequest('url...')
http://www.lryc.cn/news/31861.html

相关文章:

  • 核心 Android 调节音量的过程
  • 用C/C++制作一个简单的俄罗斯方块小游戏
  • 使用免费负载生成器swingbench对oracle数据库进行压力测试(测试Oracle的功能或评估性能)
  • 【预告】ORACLE Primavera P6 v22.12 虚拟机发布
  • 机器学习100天(四十):040 线性支持向量机-公式推导
  • 失败经验之震荡玩家往往死于趋势市场
  • 应用层与传输层~
  • IO文件操作
  • 【构建工具】webpack 3、4 升级指南,摆脱低版本的困扰
  • Javaweb第一个项目——实现简单的登陆功能
  • OpenKruise 开发者不容错过的带薪实习机会!马上加入 LFX Mentorship 计划
  • 《c++ primer笔记》第八章 IO库
  • web开发 用idea创建一个新项目
  • 【FMCW 03】测速
  • ERP(企业资源管理)概述
  • 深入理解java虚拟机精华总结:性能监控和故障处理工具、类加载机制
  • 推荐系统与推荐算法
  • socket 编程实战(编写客户端程序 )
  • “巨亏成名”的魔鬼交易员,你知道几个?
  • 1380:分糖果(candy)
  • 数据挖掘(2.1)--数据预处理
  • PMP考前冲刺3.06 | 2023新征程,一举拿证
  • buuctf-pwn write-ups (11)
  • 【VTK】VTK隐藏vtkOutputWindow窗口的正确方法
  • 顺序表以及链表的应用及区别(包含OJ讲解)
  • JVM简介
  • Leetcode.1653 使字符串平衡的最少删除次数
  • leetcode 71~80 学习经历
  • 使用metrics-server监控k8s的资源指标
  • 【Copula】考虑风光联合出力和相关性的Copula场景生成(Matlab代码实现)