axios的get方法中,参数值为null时,参数被删除的问题

在Vue.js开发中,遇到Axios GET请求时,若参数值为null,该参数会被删除。查阅资料发现,此问题在axios 1.0.0-beta.1已修复但未更新到稳定版。解决方案包括:1) 使用qs库进行参数序列化;2) 自定义paramsSerializer处理null;3) 前端用空字符串替代null;4) 后端增加参数检查判断。推荐方案是后端使用isset或array_key_exists判断,或自定义PHP解析函数以正确处理null值。
摘要由CSDN通过智能技术生成

问题描述
vue开发的时候,发现get请求的参数值为null,这个参数会被删除掉,在后端检查这个参数时不存在就会报错。
 

Example:
入力参数: { foo: null, bar: "baz", qux: undefined }
变换后的参数: ?bar=baz

foo被删除了,后台参数检查时发现foo不存在,就会报错

参照
https://github.com/axios/axios/issues/1139

这个问题在axios:release/1.0.0-beta.1中被修改,但是没有反映到稳定版中
https://github.com/axios/axios/pull/1987

解决方案

1.这个问题在release/1.0.0-beta.1据说解决了,但是不敢使用测试版
2.使用qs模块替换axios中有问题参数序列化模块
  axios官网也推荐使用qs来代替原来的模块,原来的模块还有其他问题,比如说嵌套对象也会出问题https://github.com/nodejs/node-v0.x-archive/issues/1665

  https://github.com/axios/axios#config-defaults

  // `paramsSerializer` is an optional function in charge of serializing `params`
  // (e.g. https://www.npmjs.com/package/qs, http://api.jquery.com/jquery.param/)
  paramsSerializer: function (params) {
 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值