【快學(xué)springboot】4.接口參數(shù)校驗(yàn)

簡書停更

本人主要在頭條號(hào)寫文章嘉赎,可以關(guān)注我的頭條號(hào)【happyjava】钓觉,或者收藏我的個(gè)人博客happy的博客blog.happyjava.cn

大家可以關(guān)注我的頭條號(hào)Happyjava點(diǎn)擊跳轉(zhuǎn)

前言

在開發(fā)接口的時(shí)候焙蚓,參數(shù)校驗(yàn)是必不可少的蝴乔。參數(shù)的類型梯码,長度等規(guī)則牌捷,在開發(fā)初期都應(yīng)該由產(chǎn)品經(jīng)理或者技術(shù)負(fù)責(zé)人等來約定。如果不對入?yún)⒆鲂r?yàn)赡磅,很有可能會(huì)因?yàn)橐恍┎缓戏ǖ膮?shù)而導(dǎo)致系統(tǒng)出現(xiàn)異常魄缚。

上一篇文章講了多種接受參數(shù)的方法【快學(xué)springboot】3.多種接受參數(shù)的方式。因?yàn)槟壳癹son類型的參數(shù)是最常用的焚廊,所以這里只講解json類型的參數(shù)校驗(yàn)冶匹。其他類型的大同小異。

新建一個(gè)Param.java

public class Param {
 
 private String username;
 public String getUsername() {
 return username;
 }
 public void setUsername(String username) {
 this.username = username;
 }
}

目前這個(gè)類只有一個(gè)username屬性咆瘟。

使用Validated注解開啟參數(shù)校驗(yàn)

@PostMapping(value = "/validate/notblank")
public Object validateNotBlank(@RequestBody @Validated Param param) {
 return param;
}

NotBlank 非空判斷

修改Param.java嚼隘,在username屬性上添加NotBlank注解

@NotBlank
private String username;

測試

【快學(xué)springboot】4.接口參數(shù)校驗(yàn)
【快學(xué)springboot】4.接口參數(shù)校驗(yàn)

通過控制臺(tái),我們可以看到拋出了一個(gè)MethodArgumentNotValidException異常袒餐,上面的返回結(jié)果其實(shí)是springboot默認(rèn)的異常捕獲器返回的飞蛹。為了統(tǒng)一接口的數(shù)據(jù)返回格式,我們也需要自定義一個(gè)全局異常攔截器灸眼,這個(gè)將會(huì)在下一講中講解桩皿。

我們還可以通過NotBlank注解的message屬性設(shè)置異常信息:

@NotBlank(message = "username不可為空")
private String username;
【快學(xué)springboot】4.接口參數(shù)校驗(yàn)

Length字符串長度判斷

還是那個(gè)Param.java,我們給username加上Length注解幢炸,如下:

@Length(min = 2,max = 3)
@NotBlank(message = "username不可為空")
private String username;
【快學(xué)springboot】4.接口參數(shù)校驗(yàn)

同樣泄隔,我們也可以使用message屬性來設(shè)置返回錯(cuò)誤信息。這里就不演示了宛徊。

NotNull 限制屬性不可謂null

雖然前面有NotBlank注解了佛嬉,但是一些Integer,Long等包裝類型,還是需要用到NotNull注解來判斷闸天。

范圍判斷Min和Max

在Param.java上新增一個(gè)age屬性暖呕,并且使用Min和Max注解限定大小

@Min(1)
@Max(100)
private Integer age;

這樣寫的問題是,如果age為空苞氮,則不會(huì)校驗(yàn)湾揽。如下:

【快學(xué)springboot】4.接口參數(shù)校驗(yàn)

所以我們還需要加上NotNull注解

@Min(1)
@Max(100)
@NotNull
private Integer age;
【快學(xué)springboot】4.接口參數(shù)校驗(yàn)
【快學(xué)springboot】4.接口參數(shù)校驗(yàn)

也可使用@Range注解來限定范圍

@Range(min = 1, max = 100)

Email 注解校驗(yàn)郵件

@Email
private String email;
【快學(xué)springboot】4.接口參數(shù)校驗(yàn)

Pattern 注解校驗(yàn)正則表達(dá)式

@Pattern(regexp = "\d{4}-\d{2}-\d{2}")
private String birthday;
【快學(xué)springboot】4.接口參數(shù)校驗(yàn)

總結(jié)

以上總結(jié)了部分常用的參數(shù)校驗(yàn)的方法,當(dāng)然還有很詳細(xì)的一些沒有列舉處理,有需要的库物,可以自行搜索使用方式即可霸旗。參數(shù)校驗(yàn),往往需要和全局的異常攔截器來配套使用戚揭,使得返回的數(shù)據(jù)結(jié)構(gòu)永遠(yuǎn)是保持一致的诱告,這樣才能方便客戶端解釋。

下一節(jié)會(huì)對統(tǒng)一返回格式和全局異常攔截器做一個(gè)講解民晒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末精居,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子潜必,更是在濱河造成了極大的恐慌靴姿,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磁滚,死亡現(xiàn)場離奇詭異佛吓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)恨旱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門辈毯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坝疼,“玉大人搜贤,你說我怎么就攤上這事《坌祝” “怎么了仪芒?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長耕陷。 經(jīng)常有香客問我掂名,道長,這世上最難降的妖魔是什么哟沫? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任饺蔑,我火速辦了婚禮,結(jié)果婚禮上嗜诀,老公的妹妹穿的比我還像新娘猾警。我一直安慰自己,他們只是感情好隆敢,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布发皿。 她就那樣靜靜地躺著,像睡著了一般拂蝎。 火紅的嫁衣襯著肌膚如雪穴墅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機(jī)與錄音玄货,去河邊找鬼皇钞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛誉结,可吹牛的內(nèi)容都是我干的鹅士。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼惩坑,長吁一口氣:“原來是場噩夢啊……” “哼掉盅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起以舒,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤趾痘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蔓钟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體永票,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年滥沫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侣集。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兰绣,死狀恐怖世分,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缀辩,我是刑警寧澤臭埋,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站臀玄,受9級特大地震影響瓢阴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜健无,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一荣恐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧累贤,春花似錦叠穆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至讶请,卻和暖如春祷嘶,著一層夾襖步出監(jiān)牢的瞬間屎媳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工论巍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烛谊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓嘉汰,卻偏偏與公主長得像丹禀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子鞋怀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容