1、问题分析
在做接口测试时,偶然出现了前端输出有值,但是后端断点调试时却出现接收参数总是为null的情况
2、解决办法
前端打印log,看前端的每一个传值的数据类型,与后端请求参数类进行认真的一一比对
小技巧:
① 直接打印调用接口的传参值的数据类型,例如
console.log(type of this.form.name) --string
console.log(type of this.form.age) --number
打印的数据类型与后端接口的参数类比对,查出不对应的类型
② 关于非必填的值,默认传值可能出现空字符串(' ')、NaN值(Not a Number,非数;是计算机科学中> 数值数据类型的一类值,表示未定义或不可表示的值)
此时注意值的转换,比如时间戳的long类型,不传值给个0,传参的时候可以这样写:
this.form.time || 0 即可
默认为short、int、long等值传值为字符串的话,可以使用
1)Number():
全局方法Number()可把字符串转换为数字;
==》包含数字的字符串(比如 "3.14")转换为数字(比如 3.14);
例如:Number("3.14") // 返回 3.14
==》空的字符串转换为 0;
例如:Number("") 或Number(" ") // 返回 0
==》其他字符串将转换为NaN。
例如:Number("11 22") // 返回 NaN
2)parseFloat():解析字符串并返回浮点数
例如:parseFloat("10.33") // 返回 10.33
3)parseInt():解析字符串并返回整数
例如:parseInt("10") // 返回 10
比如后端某个请求参数类型为string,前端传了null
再比如后端某个请求参数类型为long,前端传了''
前端所有传值的类型包括可空字段的赋值必须和后端请求参数类型一一对应即可解决,找了好一会,特此做下记录以帮助也遇到此问题的同学。
3、参考链接
JavaScript 类型转换
JavaScript 全局属性/函数