Axios post请求出现500错误

笔者在编写前端form表单传后端数据的时候,出现了以下问题

一、问题场景

当我用axios发送post请求的时候,出现了500错误

笔者找了很长时间错误,代码没问题,后端接口也没问题,后来发现问题出在实体类上了

当前端post请求调后端接口时候,后端控制台打印如下错误

看到错误提示说无法反序列化,这是什么意思?

待我细说

二、解决方案

首先前端form表单传来的是json数据,那么我们理应在后端controller层方法参数上加上@RequestBody,理由如下

@RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml格式 或者 json等】封装为对应的 JavaBean 对象,

封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上

那么为什么还是报错呢

后来笔者百度了无数遍,终于找到了解决办法

结论:实体类有无参构造方法,对象才可以序列化

于是我在实体类上加上@NoArgsConstructor方法,然后用http调接口,前端控制台响应正常

三、总结反思

  • 序列化:将数据结构或对象转换成二进制字节流的过程
  • 反序列化:将在序列化过程中所生成的二进制字节流的过程转换成数据结构或者对象的过程
  • 对象在进行网络传输(比如远程方法调用 RPC 的时候)之前需要先被序列化,接收到序列化的对象之后需要再进行反序列化;
  • 将对象存储到文件中的时候需要进行序列化,将对象从文件中读取出来需要进行反序列化。
  • 将对象存储到缓存数据库(如 Redis)时需要用到序列化,将对象从缓存数据库中读取出来需要反序列化。

序列化的时候,需要将实体类实现Serializable接口

反序列化的时候,需要实体类有无参构造方法

相关推荐
Heris996 分钟前
2.22 c++练习【operator运算符重载、封装消息队列、封装信号灯集】
开发语言·c++
----云烟----8 分钟前
C/C++ 中 volatile 关键字详解
c语言·开发语言·c++
yuanpan27 分钟前
23种设计模式之《组合模式(Composite)》在c#中的应用及理解
开发语言·设计模式·c#·组合模式
BanLul37 分钟前
进程与线程 (三)——线程间通信
c语言·开发语言·算法
十八朵郁金香41 分钟前
【JavaScript】深入理解模块化
开发语言·javascript·ecmascript
Hello.Reader1 小时前
深入理解 Rust 的 `Rc<T>`:实现多所有权的智能指针
开发语言·后端·rust
程序员阿鹏1 小时前
jdbc批量插入数据到MySQL
java·开发语言·数据库·mysql·intellij-idea
yoona10201 小时前
Rust编程语言入门教程(八)所有权 Stack vs Heap
开发语言·后端·rust·区块链·学习方法
莲动渔舟1 小时前
国产编辑器EverEdit - 在编辑器中对文本进行排序
java·开发语言·编辑器
YaHuiLiang1 小时前
一切的根本都是前端“娱乐圈化”
前端·javascript·代码规范