接口入參驗證(@RequestParam\@Valid\@Validated\@RequestBody)


@RequestParam   適用於Get請求且content-type為application/x-www-form-urlencoded

@RequestBody     適用於post請求且content-type為非application/x-www-form-urlencoded類型,一般為application/json

(1)入參為@RequestParam或@RequestBody時,不用加@valid和@validated;

(2)入參為@NotNull時要在方法上加@valid或@validated,或者在類上加@Validated(@valid不能作用於類上),這樣@NotNull才能起作用。

@Valid
@GetMapping("/exam-info")
public Boolean getInfo(@NotNull(message="examId不能為空")Long examId){......}

(3)當入參為實體對象時,需要在方法上加@Valid或@Validated或者在參數前加@Valid或@Validated,或者在類上加@Validated

@Valid
@GetMapping("/exam-info")
public Boolean getInfo(User user){......}
 
 
@GetMapping("/exam-info")
public Boolean getInfo(@Valid User user){......}
 
@Validated
@GetMapping("/exam-info")
public Boolean getInfo(User user){......}
 
 
@GetMapping("/exam-info")
public Boolean getInfo(@Validated User user){......}
 
public Class User{
 
    @NotNull("id不能為空"private Integer id;
    .
    .
    .
}

4.嵌套驗證

     @valid作用於屬性上有嵌套驗證作用,@validated不能作用於屬性上,如下代碼在User類的屬性car上添加@valid注解,當傳參id為空時會報錯。

@GetMapping("/exam-info")
public Boolean getInfo(@Valid User user){.....}
 
@GetMapping("/exam-info")
public Boolean getInfo(@Validated User user){.....}
 
public class User{
  @Valid
  @NotNull("car不能為空")
  private Car car;
 
  ........
 
}
 
public class Car{
  
  @NotNull("id不能為空")
  private Integer id;
 
  ........
 
}

 

https://blog.csdn.net/zhoubingzb/article/details/88311624

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM