使用@GetMapping
注解描述参数获取方法
`@RequestMapping(value = "/list",method = RequestMethod.GET)`
表示*/list路径的controller层,通过get方法获取参数,可以简化为:
`@GetMapping("/list")`
使用@Validated
注解对参数进行校验
一个数据传输对象UserAccount:
@Data
@ApiModel
public class UserAccount {
/**
* 用户名
*/
@ApiModelProperty(value = "用户名")
@Pattern(regexp = "^[a-zA-Z0-9_]{6,32}$", message = "用户名不符合规则(6-32位,仅可包含:字母大小写,数字,下划线)")
private String username;
/**
* 昵称
*/
@ApiModelProperty("昵称")
@Pattern(regexp = "^[a-zA-Z0-9_]{6,32}$",message = "用户名不符合规则(6-32位,仅可包含:字母大小写,数字,下划线)")
private String nickName;
/**
* 手机号
*/
@ApiModelProperty("手机号")
@Pattern(regexp = "^1[0-9]{10}$",message = "手机号是1开头的11位数字")
private String phone;
}
一般用于登录校验,
@pattern
表示参数的规则,controller层:
@ApiOperation(value = "用户创建/注册")
@PostMapping("/create")
public HttpResult create(@RequestBody @Validated UserAccount userAccount,BindingResult bindingResult){
if (bindingResult.hasErrors()){
return HttpResult.fail(HttpFail.DTO_INVALID.getCode(),bindingResult.getFieldError().getDefaultMessage());
}
前端会要求输入三个设定的参数:
`
{
"nickName": "string",
"phone": "1233456656",
"username": "string"
}
`
因为使用了@validate
注解,所以不需要在代码中再写一堆if...else来做判断了,如果输入的参数不符合@pattern
的匹配规则,会直接提示参数错误的原因,程序也不会因为异常而直接挂掉.除了@pattern
,还有其他判断校验的注解:比如@NotNull
,@NotBlank
,具体的可以参考这篇文章中的数据校验.
使用@PathVariable
注解在路由中动态传参
接口中配置路由@GetMapping(value = "/info/{id}")
,要让方法体中的参数传到{id}
中,可以这样:
public HttpResult<User> info(@RequestBody @PathVariable("id") Integer id){
if (id == 0){
return HttpResult.fail(HttpFail.ID_ZERO_ERROR);
}
@PathVariable
后的参数名称要与路由中的名称相同,这个注解表明了方法中的参数要代替路由中的参数,实现动态路由传参.