日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring WebFlux實現(xiàn)參數校驗的示例代碼

瀏覽:23日期:2023-06-27 08:08:49

請求參數校驗,在實際的應用中很常見,網上的文章大部分提供的使用注解的方式做參數校驗。本文主要介紹 Spring Webflux Function Endpoint 使用 Spring Validation 來校驗請求的參數。使用上一篇文章的示例來演示。

使用步驟如下:

1.創(chuàng)建校驗器 Validator

2.運用校驗器

3.拋出異常,返回 http status 400 錯誤

PersonValidator.java

package com.example.springbootdemo.webflux.restful;import org.springframework.stereotype.Component;import org.springframework.validation.Errors;import org.springframework.validation.ValidationUtils;import org.springframework.validation.Validator;@Componentpublic class PersonValidator implements Validator { @Override public boolean supports(Class<?> clazz) { return Person.class.isAssignableFrom(clazz); } // 校驗參數的方法 @Override public void validate(Object o, Errors errors) { ValidationUtils.rejectIfEmpty(errors, 'name', 'name.required'); ValidationUtils.rejectIfEmpty(errors, 'age', 'age.required'); Person p = (Person) o; if (p.getAge() != null && p.getAge() < 0) { errors.rejectValue('age', 'negative.value'); } else if (p.getAge() != null && p.getAge() > 200) { errors.rejectValue('age', 'too.old'); } }}

校驗器在 savePerson 方法中的使用

@Slf4j@Componentpublic class PersonHandler { @Autowired private PersonRepository repository; @Autowired private PersonValidator validator; public Mono<ServerResponse> savePerson(ServerRequest request) { Mono<Person> personMono = request.bodyToMono(Person.class).doOnNext(this::validate); return ServerResponse.ok().contentType(MediaType.APPLICATION_JSON).body(this.repository.savePerson(personMono), Void.class); } public void validate(Person person) { Errors errors = new BeanPropertyBindingResult(person, Person.class.getName()); validator.validate(person, errors); if (errors.hasErrors()) {// 拋出 http status 400 異常 throw new ServerWebInputException(errors.toString()); } } // .... 省略}

請求效果:

Spring WebFlux實現(xiàn)參數校驗的示例代碼

官方校驗參數示例的地址 https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html

使用 Spring 官方文檔提供的示例不會拋出 http code 400 錯誤,返回的是http code 為 200。

接下來,我們來看一下Validator 接口中的兩個方法 supports 和 validate

supports(Class) : 判斷當前的校驗器用指定的類上。 validate(Object, org.springframework.validation.Errors) : 校驗給定的對象,如果出現(xiàn)錯誤,就給Errors 注冊 Error 信息。

另外,Spring 還提供了非常好用的 ValidationUtils 的工具類,提供了靜態(tài)的方法

rejectIfEmpty rejectIfEmptyOrWhitespace

全局異常的使用

@Configuration@Slf4jpublic class GlobalErrorConfig { private ObjectMapper objectMapper = new ObjectMapper(); @Bean @Order(-2) public WebExceptionHandler exceptionHandler() { return (ServerWebExchange serverWebExchange, Throwable t) -> { DataBuffer dataBuffer = serverWebExchange.getResponse().bufferFactory().allocateBuffer(); Result result = new Result(); if (t instanceof ServerWebInputException) {ServerWebInputException exception = (ServerWebInputException) t;result.setCode(exception.getStatus().value());result.setMessage(exception.getReason()); } else {result.setCode(HttpStatus.INTERNAL_SERVER_ERROR.value());result.setMessage(HttpStatus.INTERNAL_SERVER_ERROR.toString()); } try {dataBuffer.write(objectMapper.writeValueAsBytes(result)); } catch (JsonProcessingException e) {log.error(NestedExceptionUtils.buildMessage('write error', e)); } ServerHttpResponse response = serverWebExchange.getResponse(); response.setRawStatusCode(result.getCode()); return response.writeWith(Mono.just(dataBuffer)); }; }}

Result.java

import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class Result { private Integer code; private String message;}

請求效果:

Spring WebFlux實現(xiàn)參數校驗的示例代碼

至此,Webflux 的Function Endpoint 的參數校驗的使用結束了。

參考:

WebFlux Handler Validation

Spring Validator

到此這篇關于Spring WebFlux實現(xiàn)參數校驗的示例代碼的文章就介紹到這了,更多相關Spring WebFlux 參數校驗內容請搜索好吧啦網以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩国产在线观看网站| 亚洲免费毛片| 欧美激情网址| 国产精品免费99久久久| 亚洲另类av| 日本欧美在线看| 男女性色大片免费观看一区二区| 99pao成人国产永久免费视频| 亚洲欧美日韩国产| 蜜臀a∨国产成人精品| 亚洲精品综合| 国产精品欧美三级在线观看| 精品三级在线| 精品国产麻豆| 亚洲天堂1区| 一区三区视频| 亚洲无线观看| 久久国产乱子精品免费女| 久久黄色影视| 国产 日韩 欧美 综合 一区| 激情久久久久久久| 首页国产欧美久久| 日韩不卡在线观看日韩不卡视频| 久久av偷拍| 91精品一区国产高清在线gif| 日韩视频不卡| **爰片久久毛片| 欧美国产美女| 亚洲精品小说| 日本午夜免费一区二区| 岛国精品一区| 亚洲视频播放| 国产精品极品在线观看| 久久国产主播| 日本成人中文字幕在线视频| 国产一区二区亚洲| 影音国产精品| 国产精品视频一区二区三区综合| 蜜臀久久精品| 蜜桃久久精品一区二区| 精品国产亚洲一区二区三区| 午夜国产一区二区| 欧美日一区二区在线观看| 国产999精品在线观看| 午夜亚洲精品| 精品99久久| 夜夜嗨一区二区| 欧美1区二区| 国产偷自视频区视频一区二区| 国产情侣久久| 欧美一区二区三区激情视频| 日韩av中文字幕一区二区三区| 国产精品专区免费| 亚洲毛片在线| 日韩不卡视频在线观看| 青青草精品视频| 四虎4545www国产精品| 日本一区中文字幕| 国产网站在线| 视频一区中文字幕精品| 亚洲国产欧美日本视频| 天堂va欧美ⅴa亚洲va一国产| 久久夜夜操妹子| 国产精品伊人| 日韩午夜免费| 国产一二在线播放| 国产亚洲一卡2卡3卡4卡新区| 国产精品av一区二区| 国产精品嫩草影院在线看| 狠狠色狠狠色综合日日tαg| 国产一区二区三区亚洲综合| 亚洲欧美在线专区| 日韩不卡在线| 欧美激情91| 欧美xxxx中国| 无码日韩精品一区二区免费| 97精品97| 国产精品一线| 首页亚洲欧美制服丝腿| 色爱综合av| 欧美成a人片免费观看久久五月天| 视频一区国产视频| 国产91精品对白在线播放| 国产成人调教视频在线观看| 日韩国产在线观看一区| 国产婷婷精品| 欧美日韩在线播放视频| 美女视频黄久久| 亚洲v天堂v手机在线| 伊人久久大香线蕉av不卡| 老司机免费视频一区二区三区| 亚洲+小说+欧美+激情+另类| 日韩午夜一区| 丝袜美腿诱惑一区二区三区| 精品精品99| 国产精品激情电影| 日韩国产一区二| 国产日韩一区| 在线国产一区二区| 久久激情一区| 日韩精品诱惑一区?区三区| 国产精品观看| 国产日韩中文在线中文字幕| 巨乳诱惑日韩免费av| 欧美日韩在线二区| 欧美精品高清| 精品捆绑调教一区二区三区| 国产成人精品一区二区三区视频| 国产伦精品一区二区三区视频| 亚洲人妖在线| 亚洲精选91| 蜜桃视频一区二区| 免费一级片91| 丝袜美腿亚洲色图| 亚洲一区二区成人| 国产亚洲激情| 欧美午夜不卡| 日韩视频一区二区三区在线播放免费观看| 午夜欧美巨大性欧美巨大| 日韩av免费大片| 欧美国产美女| 老牛影视精品| 成人在线网站| 久久婷婷久久| 一级欧洲+日本+国产| 亚洲激情精品| 免费久久99精品国产自在现线| 老鸭窝毛片一区二区三区| 久久国产精品亚洲77777| 日韩专区欧美专区| 亚洲免费成人av在线| 日本欧美一区| 欧美91在线| 国产专区精品| 亚洲黄色网址| 欧美日韩中文一区二区| 蜜臀av一区二区在线免费观看| 综合色就爱涩涩涩综合婷婷| 婷婷亚洲精品| 国产乱码精品| 高清精品久久| 日韩国产一区二区| 婷婷综合亚洲| 亚洲免费专区| 久久av综合| 日韩欧美一区二区三区免费看| 久久精品欧美一区| 国产一区二区高清| 日韩一区二区三区在线看| 国产探花一区| 亚洲精品永久免费视频| 国产91一区| 亚洲精品自拍| 久久av偷拍| 91精品国产福利在线观看麻豆| 在线视频亚洲| 国产欧美一区二区三区米奇 | 成人午夜网址| 亚洲夜间福利| 亚洲91网站| 精品久久久久久久| 日韩一级网站| 欧美日韩1区| 日韩免费高清| 一本综合精品| 嫩呦国产一区二区三区av| 99精品网站| 婷婷精品久久久久久久久久不卡| 精品一区二区三区的国产在线观看 | 日韩一区二区三区精品| 精品99在线| 亚洲一卡久久| 久久99国产精品视频| 欧美成人久久| 国产情侣一区| 久久久国产精品一区二区中文| 首页国产欧美日韩丝袜| 精品一区二区三区免费看| 亚洲成人三区| 国产精品资源| 好吊一区二区三区| 国产精品亚洲四区在线观看| 久久一级电影| 国产精品一区2区3区| 欧美1区2区3区| 国产极品模特精品一二| 午夜国产欧美理论在线播放 | 国产视频久久| 久久香蕉精品香蕉| 日本欧美在线看| 欧美男人天堂| 欧美日一区二区在线观看| 欧美色图国产精品| 国产精品一区二区美女视频免费看| 国产一区亚洲| 久久精品午夜| 视频一区中文字幕精品| 久久五月天小说| 久久精品毛片| 日韩欧美三区|