type
status
date
slug
summary
tags
category
icon
password
😀
开发一个模拟API接口时出现了问题
 

📝 问题描述

使用hutool工具发送Restful的post请求时,出现400错误(应该是参数传递问题),传递参数为一个User类,我原先使用了lombok的@AllArgsConstructor 注解,然后直接使用带参构造器传入属性,之后使用Hutool工具转为Json,这样会出现400。但是当我没有用带参构造,而是用setter方法,错误消失。

🤗 问题排查

  • 首先我检查了target目录下User在使用@AllArgsConstructor 下的生成文件,发现实时上没什么区别,只是多了一个有参构造
  • 于是我觉得是转换成json格式的时候有问题?设置断点,查看两种的json输出。
这是无有参构造的user变量以及生成的json:
notion image
notion image
这是使用有参构造的user变量以及生成的json:
notion image
notion image
发现json传入一样的数值但是结果却是一个200,一个400。
陷入沉思。。。
这个问题应该和lombok组件无关,我自己尝试写了一下有参构造,结果是一样的。
再经过我重重尝试之后,发现当我提供了无参构造之后就不会发生这种情况。
阅读源码,发现在其反序列化json数据的时候会调用无参构造,因此若无无参构造会出现无法反序列化的场景(源码里是抛出无法建立对象的错误),从而出现错误。
notion image
 
💡
如果有其他问题请在下方留言
API签名认证windows11 MySQL服务无法启动
  • Utterance
灵檠
灵檠
一个普通的干饭人🍚
Announcement
🎉欢迎访问灵檠的博客!🎉
-- 感谢您的支持 ---
👏欢迎体验👏