日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

校验json格式_不来学一下SpringBoot统一参数校验?

發布時間:2025/3/15 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 校验json格式_不来学一下SpringBoot统一参数校验? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 微服務架構之春招總結:SpringCloud、Docker、Dubbo與SpringBoot
  • 一個SpringBoot問題就干趴下了?我卻憑著這份PDF文檔吊打面試官.
  • 金三銀四第一天,啃透這些SpringBoot知識點,還怕干不贏面試官?

前言

??在日常的開發中,參數校驗是非常重要的一個環節,嚴格參數校驗會減少很多出bug的概率,增加接口的安全性。也會減少對接時不必要的溝通。比如說:在對接的時候前端動不動就甩個截圖過來說接口有問題,你檢查了半天發現前端傳遞的參數有問題。針對以上:今天給大家分享一下SpringBoot如何實現統一參數校驗。

實現方式

??使用 @Validated注解配合參數校驗注解, 比如:@NotEmpty對參數進行校驗。然后對拋出的異常ControllerAdvice進行捕獲然后調整輸出數據。

TestController

@RestControllerpublic?class?TestController?{????/**?????*?表單請求?????*?@param?form?請求參數?????*?@return?響應數據?????*/????@PostMapping("/formRequest")????public?ResultVo?formRequest(@Validated?RequestForm?form){????????return?ResultVoUtil.success(form);????}????/**?????*?JSON請求?????*?@param?form?請求參數?????*?@return?響應數據?????*/????@PostMapping("/jsonRequest")????public?ResultVo?jsonRequest(@RequestBody?@Validated?RequestForm?form){????????return?ResultVoUtil.success(form);????}}

RequestForm

@Datapublic?class?RequestForm?{????@NotEmpty(message?=?"姓名不能為空")????private?String?name;????@Min(value?=?1?,?message?=?"年齡不能小于1歲")????private?Integer?age;????@NotEmpty(message?=?"性別不能為空")????private?Integer?sex;}

測試結果

請求:http://localhost:8080/formRequest 不傳任何參數。

這個時候SpringBoot已經根據校驗注解對參數進行校驗了。并且輸出了一大堆的錯誤信息。這個時候前端在對接的時候看到這樣的錯誤信息,反手就是給你截個圖告訴你接口有問題。所以這個時候就該使用 ControllerAdvice規范異常返回信息了。

ControllerAdvice

@Slf4j@RestControllerAdvicepublic?class?ControllerAdvice?{????/**?????*?攔截表單參數校驗?????*/????@ResponseStatus(HttpStatus.OK)????@ExceptionHandler({BindException.class})????public?ResultVo?bindException(BindException?e)?{????????BindingResult?bindingResult?=?e.getBindingResult();????????return?ResultVoUtil.error(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());????}????/**?????*?攔截JSON參數校驗?????*/????@ResponseStatus(HttpStatus.OK)????@ExceptionHandler(MethodArgumentNotValidException.class)????public?ResultVo?bindException(MethodArgumentNotValidException?e)?{????????BindingResult?bindingResult?=?e.getBindingResult();????????return?ResultVoUtil.error(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());????}}

@RestControllerAdvice會將返回的數據以json輸出,如果不需要可以使用@ControllerAdvice

以上代碼只返回了錯誤信息。可以根據實際情況進行調整。

這個時候的錯誤信息就比較友好了,非常明確的指出了缺少參數。

常用校驗注解

案例

@Datapublic?class?ExampleForm?{????@NotEmpty(message?=?"姓名不能為空")????@Length(min?=?1?,?max?=?10?,?message?=?"名字長度1~10")????private?String?name;????@Range(min?=?1?,?max?=?99?,?message?=?"年齡范圍在1~99歲")????private?Integer?age;????@Pattern(regexp?=?"^[1][3,4,5,7,8][0-9]{9}$"?,?message?=?"電話號碼有誤")????private?String?phone;????@Email(message?=?"郵箱格式有誤")????private?String?email;????@Valid????@Size(min?=?1?,max?=??10?,?message?=?"列表中的元素數量為1~10")????private?List?requestFormList;????@Future(message?=?"開始時間必須大于當前時間")????private?Date?beginTime;}

實現嵌套驗證

??在實際的開發中,前臺會后臺傳遞一個list,我們不僅要限制每次請求list內的個數,同時還要對list內基本元素的屬性值進行校驗。這個時候就需要進行嵌套驗證了,實現的方式很簡單。在list上添加@Vaild就可以實現了。

@Datapublic?class?JsonRequestForm?{????@Vaild????@Size(min?=?1?,max?=??10?,?message?=?"列表中的元素數量為1~10")????private?List?requestFormList;}


作者:不一樣的科技宅
原文鏈接:https://juejin.im/post/5e5fb6ea51882549422ee257

總結

以上是生活随笔為你收集整理的校验json格式_不来学一下SpringBoot统一参数校验?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。