axios中post请求json和application/x-www-form-urlencoded详解

 更新时间:2022年10月20日 09:40:40   作者:牧羊狼  
Axios是专注于网络数据请求的库,相比于原生的XMLHttpRequest对象,axios简单易用,下面这篇文章主要给大家介绍了关于axios中post请求json和application/x-www-form-urlencoded的相关资料,需要的朋友可以参考下

前言

前端向后端传输数据时,如果是get传输,直接传在url后;如果是post传输,则在请求体body中传输。

在body中的数据格式又有两种,一种是  json  数据格式,另一种是 字符串。具体要用哪种格式取决于后端入参的格式。

如果后端接收json数据类型,post 的 headers 需要设置 { ‘content-type’: ’application/json’ },传给后端的数据就形如  { ‘name’:’edward’, ‘age’:’25’ } 

如果后端接收的是(表单)字符串类型,post 的 headers 需设置  { ‘content-type’: ’application/x-www-form-urlencoded’ },

,传输给后端的数据就形如   ‘name=edward&age=25’  

qs   

qs.stringfy() 将对象序列化成URL的形式

axios默认数据格式为json,所以:

1.当后端需要接收json格式的数据时,post请求头不需要设置请求头,数据格式也不需要我们去转换(若数据已经是json);

2.当后端需要接收字符串格式的数据时,我们需要给post请求头设置{ ‘content-type’: ’application/x-www-form-urlencoded’ },

   这个时候如果我们传的入参是一个 js 对象,这时候我们就需要用 qs 转换数据格式,qs具体用法如下:

 安装模块:npm  i  qs  -S

import qs from 'qs';
const data = { name:'edward' , age:'25'};  // 我们传的是 js 对象
const options = {
  method: 'POST',
  headers: { 'content-type': 'application/x-www-form-urlencoded' },
  data: qs.stringify(data),   // 用 qs 将js对象转换为字符串 'name=edward&age=25'
  url: 'http://www.edward.com'
}; axios(options);

我们也可以在封装axios的时候,给它全局设置qs 

axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

【区分】: JSON.stringfy()  和 qs.stringfy() 

  let  data = { name: 'edward', age: '25' }

  前者:JSON.stringfy(data)  //  ”{ 'name' : 'edward' , 'age' : '25' }”

  后者:qs.stringfy(data)  // 'name=edward&age=25'

【区分】:jQuery 中 $.ajax 的post请求  VS   axios的post 请求的 content-type 默认值

  前者:"application/x-www-form-urlencoded"

  后者:"application/json"

$.ajax({
   type: 'POST',
   contentType: 'application/json;charset=utf-8', // 发送的数据类型
   dataType: 'json',   // 接收的数据类型
   url: 'http://www.edward.com',
   data: JSON.stringfy(formData),
   success: function (res) {
      console.log(res.data)
   }
}) 

contentType: 告诉服务器,我要发什么类型的数据

dataType:告诉服务器,我要想什么类型的数据,如果没有指定,那么会自动推断是返回 XML,还是JSON,还是script,还是String。

注意 :$.ajax() post发送到服务器的数据。

将自动转换为请求字符串格式。

如果为对象,如 { name: 'edward', age: '25' },jQuery 将自动转化为 'name=edward&age=25'

如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。

总结

到此这篇关于axios中post请求json和application/x-www-form-urlencoded详解的文章就介绍到这了,更多相关axios post请求json内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Vue适时清理keepalive缓存方案

    详解Vue适时清理keepalive缓存方案

    说到Vue缓存,我们肯定首先选择官方提供的缓存方案keep-alive,本文主要介绍了详解Vue适时清理keepalive缓存方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 详解vue项目中实现图片裁剪功能

    详解vue项目中实现图片裁剪功能

    这篇文章主要介绍了vue项目中实现图片裁剪功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 深入解析el-col-group强大且灵活的Element表格列组件

    深入解析el-col-group强大且灵活的Element表格列组件

    这篇文章主要为大家介绍了el-col-group强大且灵活的Element表格列组件深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • vue项目实现下载zip压缩包

    vue项目实现下载zip压缩包

    这篇文章主要介绍了vue项目实现下载zip压缩包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 基于el-tree实现懒加载穿梭条的示例代码

    基于el-tree实现懒加载穿梭条的示例代码

    这篇文章主要介绍了基于el-tree实现懒加载穿梭条的示例代码,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Ant Design Vue 走马灯实现单页多张图片轮播效果

    Ant Design Vue 走马灯实现单页多张图片轮播效果

    这篇文章主要介绍了Ant Design Vue 走马灯实现单页多张图片轮播,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • vue封装axios与api接口管理的完整步骤

    vue封装axios与api接口管理的完整步骤

    在实际的项目中,和后台的数据交互是少不了的,我通常使用的是 axios 库,所以下面这篇文章主要给大家介绍了关于vue封装axios与api接口管理的相关资料,需要的朋友可以参考下
    2022-01-01
  • element编辑表单el-radio回显之后无法选择的问题解决

    element编辑表单el-radio回显之后无法选择的问题解决

    今天主要来谈一下element-ui编辑表单中的el-radio回显之后无法选择的问题,主要涉及到vue的双向绑定,以及element-ui编辑表单中的el-radio的默认类型,感兴趣的可以了解一下
    2021-08-08
  • vue-router项目实战总结篇

    vue-router项目实战总结篇

    vue-router 是 Vue.js 官方的路由库.这篇文章主要介绍了vue-router项目实战总结,需要的朋友可以参考下
    2018-02-02
  • 详解vue-cli 快速搭建单页应用之遇到的问题及解决办法

    详解vue-cli 快速搭建单页应用之遇到的问题及解决办法

    这篇文章主要介绍了详解vue-cli 快速搭建单页应用之遇到的问题及解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03

最新评论