SpringBoot集成validation校验参数遇到的坑
公众号中分享了一篇文章,关于SpringBoot集成validation校验参数的,粉丝留言说有坑。
原留言如下:
有坑,你试试^A-\\d{12}-\\d{4}$,这条正则经过validate这个方法无论参数写的对不对都会报验证错误,而用main方法测试是正常的。。
话说,针对这种回复我是不太信了,直觉告诉我,肯定是这位粉丝用错了。但既然粉丝有疑问还是需要专门写一个demo来验证一下的。说写就写。
SpringBoot集成validation
集成过程非常简单,在原项目的pom文件中直接引入如下依赖:
org.springframework.boot spring-boot-starter-validation
引入之后,便可以在项目中使用@Valid等来进行校验了。
这里写一个简单的示例基于@Valid来验证提交的参数是否合法。首先建一个实体类,LoginForm(使用了Lombok):
@Data publicclassLoginForm{ @NotBlank(message="邮箱不能为空") @Email privateStringemail; @NotBlank(message="密码不能为空") @Length(min=6,message="密码长度最小为6位") privateStringpassword; @NotBlank @Pattern(regexp="^A-\\d{12}-\\d{4}$",message="格式错误") privateStringother; }
顺便校验了一下其他的参数,最后一个other字段用来校验粉丝提出疑问的正则表达式。
然后,在创建一个Controller类:
@Slf4j @RestController publicclassLoginController{ @PostMapping("/login") publicvoidlogin(@ValidLoginFormloginForm,BindingResultbindingResult){ log.info("loginForm:{}",loginForm); if(bindingResult.hasErrors()){ for(ObjectErrorerror:bindingResult.getAllErrors()){ log.info("error:{}",error.getDefaultMessage()); } }else{ log.info("参数校验成功!"); } } }
如果参数校验出错,会打印错误日志,如果校验成功则打印“参数校验成功!”。因为是Post请求,咱们就写一个针对该服务的单元测试:
@Slf4j @SpringBootTest @RunWith(SpringRunner.class) @AutoConfigureMockMvc @WebAppConfiguration publicclassTestLoginController{ @Autowired privateWebApplicationContextwebApplicationContext; @Autowired privateMockMvcmockMvc; @Before publicvoidsetUp(){ mockMvc=MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); } @Test publicvoidtestLogin()throwsException{ MvcResultmvcResult=mockMvc.perform(MockMvcRequestBuilders.post("/login") .param("email","541075754@qq.com") .param("password","123456") .param("other","A-123456789012-1234") .accept(MediaType.APPLICATION_JSON)) .andDo(MockMvcResultHandlers.print()) .andReturn(); intstatus=mvcResult.getResponse().getStatus();//得到返回代码 Stringcontent=mvcResult.getResponse().getContentAsString();//得到返回结果 log.info("返回结果content={}",content); Assert.assertEquals(200,status); } }
执行打印测试,查看日志,发现校验通过,并没有出错。至此,粉丝提出的质疑并不成立。而粉丝遇到的问题,很可能是哪个细节导致了校验失败,而他总结的经验就是validation校验参数有坑。
到此这篇关于SpringBoot集成validation校验参数遇到的坑的文章就介绍到这了,更多相关SpringBoot集成validation校验参数内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。