axios请求中以params或body形式传递参数的区别浅析

 更新时间:2023年04月07日 10:27:29   作者:学学学无止境  
最近在做自己项目中,做一个非常简单的新增用户场景,但是使用原生axios发送post请求的时候,还是踩了不少坑的,下面这篇文章主要给大家介绍了关于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实现后台系统权限控制的示例代码

    基于Vue实现后台系统权限控制的示例代码

    本篇文章主要介绍了基于Vue实现后台系统权限控制的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Vue Echarts实现带滚动效果的柱形图

    Vue Echarts实现带滚动效果的柱形图

    这篇文章主要为大家详细介绍了Vue Echarts实现带滚动效果的柱形图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Webpack和Vite的区别小结

    Webpack和Vite的区别小结

    本文主要介绍了Webpack和Vite的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • vue组件入门知识全梳理

    vue组件入门知识全梳理

    这篇文章主要给大家介绍了关于vue组件入门知识的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • vue脚手架项目创建步骤详解

    vue脚手架项目创建步骤详解

    这篇文章主要介绍了vue脚手架项目创建步骤详解,文章讲解的很清晰,初学者可以跟着步骤学习下
    2021-03-03
  • Vuex实现简单购物车

    Vuex实现简单购物车

    这篇文章主要为大家详细介绍了Vuex实现简单购物车,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • vue的axios请求改变content-type为form-data问题

    vue的axios请求改变content-type为form-data问题

    这篇文章主要介绍了vue的axios请求改变content-type为form-data问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue如何使用js对图片进行点击标注圆点并记录它的坐标

    vue如何使用js对图片进行点击标注圆点并记录它的坐标

    这篇文章主要介绍了vue如何使用js对图片进行点击标注圆点并记录它的坐标,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue.js组件vue-waterfall-easy实现瀑布流效果

    vue.js组件vue-waterfall-easy实现瀑布流效果

    这篇文章主要为大家详细介绍了vue.js实现瀑布流之vue-waterfall-easy的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 基于vue循环列表时点击跳转页面的方法

    基于vue循环列表时点击跳转页面的方法

    今天小编就为大家分享一篇基于vue循环列表时点击跳转页面的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08

最新评论