本篇文章給大家分享的是有關(guān)使用SpringBoot對(duì)validation進(jìn)行集成時(shí)會(huì)遇到哪些問(wèn)題,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
SpringBoot集成validation
集成過(guò)程非常簡(jiǎn)單,在原項(xiàng)目的pom文件中直接引入如下依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
引入之后,便可以在項(xiàng)目中使用@Valid等來(lái)進(jìn)行校驗(yàn)了。
這里寫(xiě)一個(gè)簡(jiǎn)單的示例基于@Valid來(lái)驗(yàn)證提交的參數(shù)是否合法。首先建一個(gè)實(shí)體類(lèi),LoginForm(使用了Lombok):
@Data public class LoginForm { @NotBlank(message = "郵箱不能為空") @Email private String email; @NotBlank(message = "密碼不能為空") @Length(min = 6,message = "密碼長(zhǎng)度最小為6位") private String password; @NotBlank @Pattern(regexp = "^A-\\d{12}-\\d{4}$",message = "格式錯(cuò)誤") private String other; }
順便校驗(yàn)了一下其他的參數(shù),最后一個(gè)other字段用來(lái)校驗(yàn)粉絲提出疑問(wèn)的正則表達(dá)式。
然后,在創(chuàng)建一個(gè)Controller類(lèi):
@Slf4j @RestController public class LoginController { @PostMapping("/login") public void login(@Valid LoginForm loginForm, BindingResult bindingResult) { log.info("loginForm:{}", loginForm); if (bindingResult.hasErrors()) { for (ObjectError error : bindingResult.getAllErrors()) { log.info("error:{}", error.getDefaultMessage()); } } else { log.info("參數(shù)校驗(yàn)成功!"); } } }
如果參數(shù)校驗(yàn)出錯(cuò),會(huì)打印錯(cuò)誤日志,如果校驗(yàn)成功則打印“參數(shù)校驗(yàn)成功!”。因?yàn)槭荘ost請(qǐng)求,咱們就寫(xiě)一個(gè)針對(duì)該服務(wù)的單元測(cè)試:
@Slf4j @SpringBootTest @RunWith(SpringRunner.class) @AutoConfigureMockMvc @WebAppConfiguration public class TestLoginController { @Autowired private WebApplicationContext webApplicationContext; @Autowired private MockMvc mockMvc; @Before public void setUp() { mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build(); } @Test public void testLogin() throws Exception { MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/login") .param("email", "[email protected]") .param("password", "123456") .param("other", "A-123456789012-1234") .accept(MediaType.APPLICATION_JSON)) .andDo(MockMvcResultHandlers.print()) .andReturn(); int status = mvcResult.getResponse().getStatus(); //得到返回代碼 String content = mvcResult.getResponse().getContentAsString(); //得到返回結(jié)果 log.info("返回結(jié)果content={}", content); Assert.assertEquals(200, status); } }
執(zhí)行打印測(cè)試,查看日志,發(fā)現(xiàn)校驗(yàn)通過(guò),并沒(méi)有出錯(cuò)。至此,粉絲提出的質(zhì)疑并不成立。而粉絲遇到的問(wèn)題,很可能是哪個(gè)細(xì)節(jié)導(dǎo)致了校驗(yàn)失敗,而他總結(jié)的經(jīng)驗(yàn)就是validation校驗(yàn)參數(shù)有坑。
以上就是使用SpringBoot對(duì)validation進(jìn)行集成時(shí)會(huì)遇到哪些問(wèn)題,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站標(biāo)題:使用SpringBoot對(duì)validation進(jìn)行集成時(shí)會(huì)遇到哪些問(wèn)題-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://m.2m8n56k.cn/article0/esioo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站維護(hù)、面包屑導(dǎo)航、網(wǎng)站建設(shè)、網(wǎng)站排名、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容