axios json请求区别(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
我们也可以在封装axios的时候,给它全局设置qs
【区分】: 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"
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内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!