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