JAX-RS(Java API for RESTful Web Services)配合@Validated 进行分组校验 RESTful服务接口对象参数详细示例
时间: 2024-03-03 16:49:44 浏览: 172
当我们在开发RESTful服务时,经常需要对接口参数进行校验,以确保接口的输入数据符合业务要求。@Validated 是Spring框架中的一个注解,它可以结合JAX-RS中的@Valid 注解,实现对RESTful服务接口对象参数的校验。下面是一个详细的示例:
假设我们有一个RESTful服务接口,用于创建用户账号,接口定义如下:
```
@Path("/users")
public class UserResource {
@POST
@Path("/")
public Response createUser(@Valid User user) {
// 处理创建用户账号的业务逻辑
}
}
```
上述代码中,@POST 和 @Path("/") 注解表示该接口可以处理HTTP POST请求以及URI路径为 /users 的HTTP请求。@Valid 注解表示需要对 User 参数进行校验,但是默认情况下,该注解会对 User 对象中的所有属性进行校验,如果我们只需要对某些属性进行校验,可以使用@Validated 注解进行分组校验。例如,我们可以定义一个名为CreateUserGroup的分组,用于校验创建用户时必填的属性,例如用户名和密码:
```
public interface CreateUserGroup {
// 分组校验标识接口
}
```
接着,在User类中使用@NotNull 和 @NotBlank 注解,标记用户名和密码属性必填:
```
public class User {
@NotNull(groups = {CreateUserGroup.class})
private String username;
@NotNull(groups = {CreateUserGroup.class})
@NotBlank(groups = {CreateUserGroup.class})
private String password;
// 其他属性和方法省略
}
```
最后,在 createUser() 方法中使用@Validated 注解,标记需要进行分组校验的分组名称:
```
@Path("/users")
public class UserResource {
@POST
@Path("/")
public Response createUser(@Validated(CreateUserGroup.class) User user) {
// 处理创建用户账号的业务逻辑
}
}
```
上述代码中,@Validated(CreateUserGroup.class) 注解表示对 User 对象进行 CreateUserGroup 分组校验。这样,在调用 createUser() 方法时,就只会对用户名和密码进行校验。
阅读全文