为了账号安全,请及时绑定邮箱和手机立即绑定

axios请求JSON问题详解

标签:
JavaScript

  1. 当参数是JSON对象时,默认的Content-Type是application/json。

    axios.post('/user', {    firstName: 'Fred',    lastName: 'Flintstone'  })  .then(function (response) {    console.log(response);  })  .catch(function (error) {    console.log(error);  });

    此时传递的参数是Request Payload格式{firstName:"Fred",lastName:"Flintstone"}  

    如果出现No 'Access-Control-Allow-Origin' header is present on the requested resource的错误,则是跨域问题。本人喜欢直接配置服务器来解决跨域:例如Nginx配置:Nginx配置跨域请求

  2. 当参数是JSON字符串时,默认的Content-Type是application/x-www-form-urlencoded。

    axios.post('/user', JSON.stringify({    firstName: 'Fred',    lastName: 'Flintstone'  }))  .then(function (response) {    console.log(response);  })  .catch(function (error) {    console.log(error);  });

    此时传递的参数是Form Data格式key : value

    {"firstName":"Fred","lastName":"Flintstone"}:

    如上。其实这是一个无效的数据,key为{"firstName":"Fred","lastName":"Flintstone"},value为空。

  3. 要想使用application/x-www-form-urlencoded格式,需要进行数据转换,虽然有两种方式URLSearchParamsqs两种方式。我更喜欢使用qs库的方式,代码如下:

    axios.interceptors.request.use((req) => {    if (req.method === 'post') {     req.data = qs.stringify(req.data);    }    return req;}, (error) => Promise.reject(error));

    之后使用axios的时候,只需要传递json对象就可以:

    axios.post('/user', {    firstName: 'Fred',    lastName: 'Flintstone'  })  .then(function (response) {    console.log(response);  })  .catch(function (error) {    console.log(error);  });

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消