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

axios 进阶

axios 进阶

接口传参方式

使用 xhr 原生技术或者是 axios 时,它的 post 传参方式是键值对的形式 key=value。但是在实际开发中一般是使用对象的形式定义数据,方便读取和赋值。所以当我们需要发起请求时可以通过 qs 这一款插件将对象转成键值对形式,也可以将键值对形式转成对象,这样就省去了我们自己手动转换的代码。

:::warning 注意
接下来的会在上一个 axios 案例的基础上去做调整,如需要请查看 axios 使用。
:::


  1. 通过命令安装 qs 插件
$ yarn add qs
  1. 修改传参方式
import axios from 'axios'
import qs from 'qs'const data = qs.stringify({account: 'test',password: '123456'
})const p1 = axios({method: 'post',url: 'https://study.noxussj.top/api/login',data: data,headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'}
})p1.then((res) => {console.log(res.data)
})
  1. 修改后预览效果,依然是可以正常请求接口。

请求拦截器

请求拦截器一般是指在请求前需要做的一些处理,例如配置默认请求参数,或者把对象转成键值传参对方式等。这里要记住,每一次新的请求都会先经过请求拦截器。例如我们可以把 qs 转换方法写在请求拦截器中,这样就不需要在每次请求前都要调用 qs 做数据处理,从而节省了部分代码,也让请求参数格式统一成对象形式。

:::warning 注意
基于上面的案例在继续做优化,如需要请查看 axios 接口传参方式。
:::

import axios from 'axios'
import qs from 'qs'/*** 请求拦截器*/
axios.interceptors.request.use((config) => {config.data = qs.stringify(data)return config
})/*** 发起请求*/
const data = { account: 'test', password: '123456' }const p1 = axios({method: 'post',url: 'https://study.noxussj.top/api/login',data: data,headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})p1.then((res) => {console.log(res.data)
})

修改后预览效果,依然是可以正常请求接口。

响应拦截器

响应拦截器一般是指接口响应成功,准备返回接收的数据之前做的一些处理。例如只返回核心部分数据、判断后端的 code 是否正常,错误则弹出提示框提示等。这里要记住,每一次新的请求数据返回之前都会先经过响应拦截器。

:::warning 注意
基于上面的案例在继续做优化,如需要请查看 axios 请求拦截器。
:::

import axios from 'axios'
import qs from 'qs'/*** 请求拦截器*/
axios.interceptors.request.use((config) => {config.data = qs.stringify(data)return config
})/*** 响应拦截器*/
axios.interceptors.response.use((response) => {if (response.data.code !== 200) {alert('接口响应失败')}return response.data
})/*** 发起请求*/
const data = { account: 'test', password: '123456' }const p1 = axios({method: 'post',url: 'https://study.noxussj.top/api/login',data: data,headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})p1.then((res) => {console.log(res.data)
})

原文链接:菜园前端

http://www.lryc.cn/news/143215.html

相关文章:

  • Redis限流实践:实现用户消息推送每天最多通知2次的功能
  • uniapp 存储base64资源为http链接图片
  • 列表类控件虚拟化
  • c# 多线程Task.Run 取消正在执行的多线程
  • sql server 如何设置主键
  • 【LeetCode-中等题】19. 删除链表的倒数第 N 个结点
  • Matlab图像处理-减法运算
  • stm32之11.USART串口通信
  • Python实现T检验
  • 校招算法题实在不会做,有没有关系?
  • Michael.W基于Foundry精读Openzeppelin第32期——SignatureChecker.sol
  • 如何修改字符串内容?
  • pgadmin4中的备份与恢复
  • 内网穿透——搭建私人影音媒体平台
  • 使用psql操作PostgreSQL数据库
  • 什么是网络取证(Network Forensics)
  • 农村农产品信息展示网站的设计与实现(论文+源码)_kaic
  • keepalived+lvs(DR)(四十六)
  • 从数据孤岛到企业xPA的演化
  • 视觉注意力收集
  • StableVideo:使用Stable Diffusion生成连续无闪烁的视频
  • 「快学Docker」Docker容器安全性探析
  • 鲍威尔“放鹰”,美联储或将再加息?
  • docker go安装库失败
  • 利用python进行键盘模拟输入
  • 2024年java面试(二)--spring篇
  • cyclictest stress 工具 使用
  • 天合翔宇荣获 HICOOL 2023 全球创业者大赛决赛二等奖
  • 【LeetCode75】第三十五题 统计二叉树中好节点的数目
  • 探究排序算法:比较与非比较排序算法及性能分析