前言:
? ? ? ? ? 前端技術(shù)框架層出不窮日新月異,很多公司都招了一些專業(yè)前端人員來編寫頁面,服務(wù)端只做好業(yè)務(wù)邏輯和數(shù)據(jù)存儲(chǔ)。前后端分離使得各自更加專注自己善長的領(lǐng)域但也有很多不是所謂的坑等著我們。
問題:
?? ? ?公司服務(wù)端是通過springboot提供restful接口,前端是react js 通過http請(qǐng)求服務(wù)端。當(dāng)接口參數(shù)是一個(gè)復(fù)雜對(duì)象通過對(duì)象傳輸服務(wù)端無法接收到對(duì)象中的值
案例一
接口:
參數(shù):
問題:
? ? ? ? ?evalAnswerDOs 始終是個(gè)空對(duì)象。
解決方案:
? ? ? 前端:1.設(shè)置http請(qǐng)求頭 ?Content-Type:application/json; charset=utf-8
服務(wù)端:
接口參數(shù) 增加@RequestBody注解 表示接收的是一個(gè)Json對(duì)象, 增加consumes表示以當(dāng)請(qǐng)求的HTTP 頭是何種格式的時(shí)候進(jìn)行應(yīng)對(duì)
案例二
接口:
入?yún)ⅲ?/p>
? ? ?MerItemDO merItemDO ?對(duì)象
? ? ?String operatorId
? ? ? String operatorName
問題:
? ? ? ? operatorId 和operatorName ?的值服務(wù)端能正常接收,merItemDO對(duì)象屬性里面的值始終都是null
解決方案
第一種:
? ? ?將3個(gè)參數(shù)封裝成一個(gè)對(duì)象 如案例一通過 application/json的方式解決
第二種:
? ? ?將 operatorId和 operatorName 當(dāng)作 path 傳入
前端
? ? 第一種: ?見案例一
? ? ? 第二種: 前端無需改動(dòng)
服務(wù)端
? ? ?第一種:見案例一
? ? ?第二種: