axios请求中以params或body形式传递参数的区别浅析
一、前言:
前端发送请求最常⽤的是get请求还有post请求,get请求只能传query参数,query参数都是拼在请求地址上的,post可以传body和query两种形;我在开发的时候通常使用的是Axios第三方库进行网络请求,所以这里主要是将Axios请求时query与body传递参数的区别
- data----->body参数(也就是请求体)
- params----->query参数(都是拼接在请求地址上)
二、Axios post
当content-type为application/x-www-form-urlencoded时
1. axios 中post请求Content-Type默认为application/json,我们传递参数的时候,query里面的参数(简称对象,通过“{}”或者“new Object“创建)会被以&的方式凭借到请求地址的后面(get请求也是一样的)
params参数如下:

2.data里面的参数(简单的对象,通过“{}”或者“new Object”创建的),会以Form Data的形式存在,但是Form Data里面把我们传进去的整体当成了一个key值,没有value
- 解决Form Data里面把我们传进去的整体当成了一个key值,没有value的方法:导入qs库(qs库以及包含在axios中,不需要重新安装),data里面的参数使用qs.stringify方法来转换,转换之后后端才能正常的获取

当content-type为application/json时:
post请求当Content-Type设置为application/json;时,query(简单对象)里面的参数仍然会被拼接到请求连接后面,但是data(简单对象)里面的参数放到Request Payload中
三、代码举例说明
get请求
axios({
method: 'GET',
url: 'xxxxx',
params: param,
})
/or get请求没有请求体参数一说
axios({
method: 'GET',
url: '/xxx?message=' + msg,
})post请求
1.body参数
/* 编辑项⽬列表 */
export function editProjectList(params) {
return request({
url: 'xxxxx....',
method: 'post',
data: params// data就是body参数
});
}2.params参数
/* 增加客户列表 */
export function addClientList(params) {
return request({
url: '....xxxx',
method: 'post',
params: params// params就是query参数
});
}
export function addClientList(params) {
return request({
url: '....xxxx',
method: 'post',
params: {params}// params就是query参数
});
}
export function addClientList(params) {
return request({
url: '....xxxx',
method: 'post',
params: {
info:'heihei'
}// params就是query参数
});
}
四、总结
- 使用post请求且content-type为application/x-www-form-urlencoded时,通常需要借助qs进行数据转换,转换后的数据发送给后端,后端才能正确的处理
- params形式传递数据不管是get还是post请求,参数最后都是以拼接url的形式出现
- get请求没有body的传参方式
- 在跟后端同时对接接口的时候,如果你的请求参数params与body分不清,通常会出现405的错误状态码如:{"code":405,"success":false,"data":{},"msg":"Request method 'GET' not supported"}
- 由于经常用的是axios库,所以发请求的时候要注意params和data的区别
到此这篇关于axios请求中以params或body形式传递参数的区别的文章就介绍到这了,更多相关axios请求传递参数的区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
关于vue中element-ui form或table lable换行的问题
这篇文章主要介绍了vue中element-ui form或table lable换行的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-03-03
vue3中storeToRefs让store中的结构出来的数据也能变成响应式(推荐)
这篇文章主要介绍了vue3中storeToRefs让store中的结构出来的数据也能变成响应式,本文通过实例代码给大家介绍的分需要的朋友可以参考下2024-09-09
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
本篇文章主要介绍了浅谈vue中使用图片懒加载vue-lazyload插件详细指南,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。2017-10-10
使用vue-element-admin框架从后端动态获取菜单功能的实现
​ vue-element-admin是一个纯前端的框架,左侧菜单是根据路由生成的。实际开发中经常需要根据当前登陆人员的信息从后端获取菜单进行展示,本文将详细介绍如何实现该功能2021-04-04
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
这篇文章主要介绍了Vue+ElementUI从零开始搭建自己的网站(一、环境搭建),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04
Vue3如何利用xlsx、xlsx-js-style导出Excel表格使用(适合新手)
在Vue项目中导出Excel表格是常见的功能,特别是在后台管理系统中,为了方便用户将大量数据保存为本地文件,这篇文章主要给大家介绍了关于Vue3如何利用xlsx、xlsx-js-style导出Excel表格使用的相关资料,需要的朋友可以参考下2024-06-06


最新评论