自学内容网 自学内容网

参数传了报错没传&参数识别不到&参数传丢

【记一次参数传值了但报错未传值的问题解决历程】
问题描述:同一个接口,用测试类调可以成功,用postman调用一直报错少参数,后又尝试了用idea自带的http调用,同样报错参数未传值。
在这里插入图片描述
如图,传值了报错未传值。

Controller层及DTO写法如下图:
在这里插入图片描述
在这里插入图片描述

解决历程

1.用postman调用一直报错参数未传值,但用测试类调可以成功,怀疑是postman的问题。后又尝试了用idea自带的http调用,结果同样,故排除postman的问题。

接口入口处打了断点,但请求参数校验处就已经失败了,没进入到接口内部。

2.怀疑是因为入参通过注解@Valid + @NotBlank 做了非空校验,注解校验错误,传值校验成未传值了。故去掉@Valid再次请求接口

在这里插入图片描述
如图,很明显,打印的参数少了!所以怀疑是参数传丢了!怎么传丢呢,必然是http传输的过程中丢的,怀疑是参数名没解析。

3.更换参数名如下图,再试,成功。

在这里插入图片描述
特殊参数名未解析到,不愿更换参数名可通过加注解@JSONField或@JsonProperty强制映射。

@JSONField注解是阿里巴巴的fastjson框架中的注解,用于指定JSON字符串中的属性名和Java对象中的属性名之间的映射关系

@JsonProperty注解是Jackson框架中的注解,用法类似于@JSONField,也是指定JSON字符串中的属性名和Java对象中的属性名之间的映射关系

4.@JSONField注解

在这里插入图片描述
在这里插入图片描述

5.@JsonProperty注解

在这里插入图片描述
在这里插入图片描述

6.@JSONField和@JsonProperty注解的其他用法可参考

https://www.jb51.net/program/3223658h7.htm


原文地址:https://blog.csdn.net/m0_45899013/article/details/142169059

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!