解決參數(shù)命名不規(guī)范,造成使用@NotNull進(jìn)行校驗出現(xiàn)的問題
傳入?yún)?shù)存在大寫字母,使用@NotNull進(jìn)行校驗出現(xiàn)問題
最近根據(jù)協(xié)議寫一些接口,post請求,傳入一個對象,其中有GPS這個字段,協(xié)議要求必須填寫,于是加上了@NotNull注解進(jìn)行非空判斷,這里就埋下了伏筆。
PS:協(xié)議里面的字段總有意想不到的命名方式?。。。?!
以下為例子
入?yún)㈩悾?/p>
模擬不同入?yún)⒌拇笮懜袷?/p>
大家都知道,post請求傳入對象,一般傳入一個json串。
1,new出一個test這個對象并賦值,然后使用alibaba fastjson工具將對象轉(zhuǎn)換成json串。
2,getPost是我封裝了一個測試post請求的方法,傳入?yún)?shù),url,當(dāng)前的MockMvc即可。
3,將testJson作為我們傳入的參數(shù),進(jìn)行測試。
MockHttpServletRequest的請求參數(shù)
如下:
MockHttpServletResponse的響應(yīng)參數(shù)
如下:
Resolved Exception告知異常
從response中會發(fā)現(xiàn)返回值Body里面的code為500,根據(jù)msg會發(fā)現(xiàn)屬于參數(shù)校驗錯誤,并告知屬于AAAA5和AAAa4這兩個參數(shù)。
我們來查看請求失敗的原因是什么
從request中看到入?yún)⑹?/p>
其中AAAA5這個字段轉(zhuǎn)成json后,變成了aAAA5,而AAAa4變成了aAAa4。
但其他幾個參數(shù)的首字母也從大寫變成了小寫,卻沒有報錯。
這里就涉及到了小駝峰命名原則了。
- aaAa2,aaAa3,aaaa1這三種都符合小駝峰的命名規(guī)范。
- aAAA5,aAAa4卻不是很符合小駝峰命名規(guī)范了(出現(xiàn)了連續(xù)的大寫字母)。
由于根據(jù)協(xié)議編程,必須按照協(xié)議規(guī)范,使用我們并不能去將傳入?yún)?shù)的命名強(qiáng)行改成小駝峰規(guī)范,或者強(qiáng)行改成我們想要的格式。
PS:當(dāng)然,如果強(qiáng)行改掉了,這個錯誤也會自然消失。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
BufferedWriter如何使用write方法實現(xiàn)換行
這篇文章主要介紹了BufferedWriter如何使用write方法實現(xiàn)換行的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07用Java實現(xiàn)小球碰壁反彈的簡單實例(算法十分簡單)
下面小編就為大家?guī)硪黄肑ava實現(xiàn)小球碰壁反彈的簡單實例(算法十分簡單)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08SpringAnimation 實現(xiàn)菜單從頂部彈出從底部消失動畫效果
最近做項目遇到這樣一個需求,要求實現(xiàn)一種菜單,菜單從頂部彈入,然后從底部消失,頂部彈入時,有一個上下抖動的過程,底部消失時,先向上滑動,然后再向下滑動消失。下面給大家?guī)砹藢崿F(xiàn)代碼,感興趣的朋友一起看看吧2018-05-05Spring Boot實戰(zhàn)之?dāng)?shù)據(jù)庫操作的示例代碼
本篇文章主要介紹了Spring Boot實戰(zhàn)之?dāng)?shù)據(jù)庫操作的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01java日期時間格式化@JsonFormat與@DateTimeFormat的使用
本文主要介紹了java日期時間格式化@JsonFormat與@DateTimeFormat的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08