筆者在編寫前端form表單傳后端數(shù)據(jù)的時候,出現(xiàn)了以下問題
一、問題場景
當(dāng)我用axios發(fā)送post請求的時候,出現(xiàn)了500錯誤
筆者找了很長時間錯誤,代碼沒問題,后端接口也沒問題,后來發(fā)現(xiàn)問題出在實體類上了
當(dāng)前端post請求調(diào)后端接口時候,后端控制臺打印如下錯誤
看到錯誤提示說無法反序列化,這是什么意思?
待我細說
二、解決方案
首先前端form表單傳來的是json數(shù)據(jù),那么我們理應(yīng)在后端controller層方法參數(shù)上加上@RequestBody,理由如下
@RequestBody是作用在形參列表上,用于將前臺發(fā)送過來固定格式的數(shù)據(jù)【xml格式 或者 json等】封裝為對應(yīng)的 JavaBean 對象,
封裝時使用到的一個對象是系統(tǒng)默認配置的 HttpMessageConverter進行解析,然后封裝到形參上
那么為什么還是報錯呢
后來筆者百度了無數(shù)遍,終于找到了解決辦法
結(jié)論:實體類有無參構(gòu)造方法,對象才可以序列化
于是我在實體類上加上@NoArgsConstructor方法,然后用http調(diào)接口,前端控制臺響應(yīng)正常
三、總結(jié)反思
- 序列化:將數(shù)據(jù)結(jié)構(gòu)或?qū)ο筠D(zhuǎn)換成二進制字節(jié)流的過程
- 反序列化:將在序列化過程中所生成的二進制字節(jié)流的過程轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)或者對象的過程
- 對象在進行網(wǎng)絡(luò)傳輸(比如遠程方法調(diào)用 RPC 的時候)之前需要先被序列化,接收到序列化的對象之后需要再進行反序列化;
- 將對象存儲到文件中的時候需要進行序列化,將對象從文件中讀取出來需要進行反序列化。
- 將對象存儲到緩存數(shù)據(jù)庫(如 Redis)時需要用到序列化,將對象從緩存數(shù)據(jù)庫中讀取出來需要反序列化。
序列化的時候,需要將實體類實現(xiàn)Serializable接口文章來源:http://www.zghlxwxcb.cn/news/detail-728744.html
反序列化的時候,需要實體類有無參構(gòu)造方法文章來源地址http://www.zghlxwxcb.cn/news/detail-728744.html
到了這里,關(guān)于Axios post請求出現(xiàn)500錯誤的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!