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

为什么axios会有params和data两个参数

不知道大家有没有过这种感觉,突然一个问题百思不得其解,然后突然有一天就明白了。然后就感觉这个问题原来这么简单,本来想记录下来,但是又感觉这么简单的问题记录下来没啥意义。但是回过头来想一想,这个问题之前其实困扰了你很长时间。感觉还是记录一下比较好,万一哪一天突然对这个问题有了新的扩展呢?

先来回顾一下axios的基本使用,怎么发送一个请求:

发送get请求

// 发送的链接就是 https://www.baidu.com?a=1
axios.get('https://www.baidu.com', { params: { a: 1 } })

// 或者这样
axios({
  method: "get",
  url: 'https://www.baidu.com',
  params: { a: 1 }
})

// 如果发送一个带请求头的就是这样
axios.get('https://www.baidu.com', { params: { a: 1 }, headers: { token: "123" } })

// 或者这样
axios({
  method: "get",
  url: 'https://www.baidu.com',
  params: { a: 1 },
  headers: { token: "111" }
})

发送post请求

axios.post('https://www.baidu.com', { a: 1 })

// 或者这样
axios({
  method: "post",
  url: 'https://www.baidu.com',
  data: { a: 1 }
})

// 如果发送一个带请求头的就是这样
axios.post('https://www.baidu.com', { a: 1 }, { headers: { token: "123" } })

// 或者这样
axios({
  method: "post",
  url: 'https://www.baidu.com',
  data: { a: 1 },
  headers: { token: "111" }
})

这里我们可以发现

axios.get可以传递两个参数 url其他参数
axios.post可以传递三个参数 url请求发出去的参数其他参数

好像不方便记忆,一会传2个,一会传3个的。所以一般情况下,即使是对项目封装网络请求,我也会使用axios()去封装,而不是使用axios.getaxios.post

那么使用axios(),get请求时如果给请求传一些参数,那么可以使用params,例如:

axios({
  method: "get",
  url: 'https://www.baidu.com',
  params: { a: 1 }
})

而使用post的时候需要使用data,例如:

axios({
  method: "post",
  url: 'https://www.baidu.com',
  data: { a: 1 }
})

好奇挂啊,为什么不能使用同一个参数呢?其实paramsdata有各自的使用意义。

params是拼接在url后面的参数
data是请求体里面的参数

例如发送post的时候

axios({
  method: "post",
  url: 'https://www.baidu.com',
  data: { a: 1 },
  params: { a: 2 }
})

上面例子a=1会放在url后面拼接,而a=2会在请求体中。所以paramsdata其实是各司其职的。

那么再来看一下,如果像使用axios.post,我既想在url后面拼接参数,又想在请求体里面有参数,该怎么写呢?

axios.post('https://www.baidu.com', { a: 1 }, { params: { a: 1 }, headers: { token: "123" } })

所以还是感觉直接调用axios好用


http://www.kler.cn/a/107657.html

相关文章:

  • 软件测试面试2024最新热点问题
  • 区块链技术在电子政务中的应用
  • Mysql 8迁移到达梦DM8遇到的报错
  • WPF中MVVM工具包 CommunityToolkit.Mvvm
  • 扫雷游戏代码分享(c基础)
  • Python的Web请求:requests库入门与应用
  • 数字孪生智慧工厂三维可视化系统解决方案,打造新一代智慧工厂
  • 【JAVA学习笔记】48 - 八大常用Wrapper类(包装类)
  • TypeScript - 枚举类型 -字符型枚举
  • ETL工具Kettle
  • 深入浅出排序算法之堆排序
  • SQL server 代理服务启动和查看
  • ArcEngine二次开发实用函数16:获取GDB中的所有图层的名称
  • rust 创建多线程web server
  • 子集生成算法:给定一个集合,枚举所有可能的子集
  • 使用docker-compose私有化部署 GitLab
  • 5G与医疗:开启医疗技术的新篇章
  • freeRTOS学习day4-中断使用消息队列
  • 软考系列(系统架构师)- 2012年系统架构师软考案例分析考点
  • Hive常用DDL操作
  • 如何隐藏woocommerce 后台header,woocommerce-layout__header
  • vue中,js获取svg内容并填充到svg图中
  • 信道数据传输速率、信号传播速度——参考《天勤计算机网络》
  • Spring Boot进阶(94):从入门到精通:Spring Boot和Prometheus监控系统的完美结合
  • windows下OOM排查
  • Vite多页面应用简单构建