使用axios请求接口,几种content-type的区别详解
axios的使用
安装(一般使用框架的话,脚手架都集成了)
$npminstallaxios
请求示例
//POST axios.post('/user',{ firstName:'Fred', lastName:'Flintstone' }) .then(function(response){ console.log(response); }) .catch(function(error){ console.log(error); });
//GET axios.get('/user',{ params:{ ID:12345 } }) .then(function(response){ console.log(response); }) .catch(function(error){ console.log(error); });
//执行多个并发 axios.all([get1(),get2()]) .then(axios.spread(function(acct,perms){ //两个请求现在都执行完成 }));
可以通过向axios传递相关配置来创建请求
语法:axios(config)
axios({ method:'post', url:'/user/12345', data:{ firstName:'Fred', lastName:'Flintstone' } });
这里,我就拿以POST的方式传递相关配置来说事,因为笔者在这里躺了两次坑,很有必要记录一下,哈哈.
默认情况下,不写content-type,是以json的方式来传递,(Content-Type:application/json;charset=UTF-8)
axios({ url:'/api/connect/token', method:'post', data:{ firstName:'Fred', lastName:'Flintstone' } }).then(res=>{ console.log(1234,res.data) }).catch(error=>{ console.log(error) })
Headers如下:
RequestPayload {firstName:"Fred",lastName:"Flintstone"}
content-type改成x-www-form-urlencoded,即表单提交方式
axios({ url:'/api/connect/token', method:'post', data:{ firstName:'Fred', lastName:'Flintstone' }, headers:{ 'Content-type':'application/x-www-form-urlencoded' } }).then(res=>{ console.log(1234,res.data) }).catch(error=>{ console.log(error) })
Headers如下:
FormData {"firstName":"Fred","lastName":"Flintstone"}:
另一种情况,序列化成字符串形式传递
axios({ url:'/api/connect/token', method:'post', data:JSON.stringify({ firstName:'Fred', lastName:'Flintstone' }) }).then(res=>{ console.log(1234,res.data) }).catch(error=>{ console.log(error) })
结果跟上面一致:
FormData {"firstName":"Fred","lastName":"Flintstone"}:
还有一种常见情况,通过qs库对数据进行编码(前提要安装qs)
importqsfrom'qs' axios({ url:'/api/connect/token', method:'post', data:qs.stringify({ firstName:'Fred', lastName:'Flintstone' }) }).then(res=>{ console.log(1234,res.data) }).catch(error=>{ console.log(error) })
结果:
RequestHeaders Content-Type:application/x-www-form-urlencoded
FormData firstName:Fred lastName:Flintstone
使用qs要注意的点:
allowDots(多层对象嵌套,可用.标记)
qs.stringify({ a:{ b:{ c:'d',e:'f' } } },{allowDots:true}); //'a.b.c=d&a.b.e=f'
以上这篇使用axios请求接口,几种content-type的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。