java 在 @ApiResponse 注解中添加条件来指定响应模型。 示例
时间: 2024-02-05 13:13:00 浏览: 35
在使用 @ApiResponse 注解时,可以通过添加 conditions 属性来指定响应模型的条件。以下是一个示例:
```
@ApiOperation(value = "Get user by ID", response = User.class)
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Successful retrieval of user", response = User.class),
@ApiResponse(code = 404, message = "User with given ID not found", response = ErrorResponse.class,
conditions = "{'com.example.demo.model.User': #returnType != null && #returnType.getSimpleName().equals('User')}") })
@GetMapping("/{id}")
public ResponseEntity<?> getUserById(@PathVariable Long id) {
User user = userRepository.findById(id).orElse(null);
if (user != null) {
return ResponseEntity.ok().body(user);
} else {
ErrorResponse errorResponse = new ErrorResponse("User with ID " + id + " not found");
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorResponse);
}
}
```
在上面的代码中,当返回类型为 User 类时,响应模型为 User 类,而当返回类型为 ErrorResponse 类时,响应模型为 ErrorResponse 类。这是通过在 @ApiResponse 注解中使用 conditions 属性来实现的。在 conditions 属性中,我们使用 SpEL 表达式指定了条件,即当 returnType 不为 null 且简单名称为 "User" 时,响应模型为 User 类。