Swagger - 呈现已声明异常的响应状态
Swagger - Render response status for declared exception
我正在大摇大摆地做我的 REST 文档。我已经设置好它并获得了对 SwaggerUi 的访问权限,还看到了我所有配置的 REST 资源及其支持的方法。
在我的后端,我有一个 ControllerAdvice
,它为我的所有控制器执行全局异常处理。在控制器建议中处理的一个示例异常是 ResourceAlreadyExistsException
,当我尝试创建一个已经存在的资源时,显然。在那种情况下,我的异常处理程序以 409 CONFLICT
状态代码响应。
@ExceptionHandler(value = ResourceAlreadyExistsException.class)
@ResponseStatus(HttpStatus.CONFLICT)
protected ErrorResponse handleResourceAlreadyExists(ResourceAlreadyExistsException ex, WebRequest request) {
return new ErrorResponse(ex.getMessage());
}
有了这个先决条件,我在 REST 控制器中映射的创建方法如下所示:
@RequestMapping(method = POST)
@ResponseStatus(HttpStatus.CREATED)
public RoleDto createRole(@RequestBody RoleDto roleDto) throws ResourceAlreadyExistsException {
return roleManager.createRole(roleDto);
}
使用默认配置,Swagger 仅向我显示 201 作为可能的响应代码。虽然409也是可以的。
当然我可以将 @ApiResponse(code = 409, message = "Role already exists")
定义添加到 createRole()
方法中,但这似乎是双重信息,因为我已经通过抛出异常暗示了这一点。
如何告诉 swagger,如果可以抛出 ResourceAlreadyExistsException
,409 也是可能的响应代码?
我试过在 ResourceAlreadyExistsException
上定义 @ApiResponse
,但没有成功。
SpringFox 中尚不存在该功能,尽管他们已经找人来实现它很长一段时间了。
我正在大摇大摆地做我的 REST 文档。我已经设置好它并获得了对 SwaggerUi 的访问权限,还看到了我所有配置的 REST 资源及其支持的方法。
在我的后端,我有一个 ControllerAdvice
,它为我的所有控制器执行全局异常处理。在控制器建议中处理的一个示例异常是 ResourceAlreadyExistsException
,当我尝试创建一个已经存在的资源时,显然。在那种情况下,我的异常处理程序以 409 CONFLICT
状态代码响应。
@ExceptionHandler(value = ResourceAlreadyExistsException.class)
@ResponseStatus(HttpStatus.CONFLICT)
protected ErrorResponse handleResourceAlreadyExists(ResourceAlreadyExistsException ex, WebRequest request) {
return new ErrorResponse(ex.getMessage());
}
有了这个先决条件,我在 REST 控制器中映射的创建方法如下所示:
@RequestMapping(method = POST)
@ResponseStatus(HttpStatus.CREATED)
public RoleDto createRole(@RequestBody RoleDto roleDto) throws ResourceAlreadyExistsException {
return roleManager.createRole(roleDto);
}
使用默认配置,Swagger 仅向我显示 201 作为可能的响应代码。虽然409也是可以的。
当然我可以将 @ApiResponse(code = 409, message = "Role already exists")
定义添加到 createRole()
方法中,但这似乎是双重信息,因为我已经通过抛出异常暗示了这一点。
如何告诉 swagger,如果可以抛出 ResourceAlreadyExistsException
,409 也是可能的响应代码?
我试过在 ResourceAlreadyExistsException
上定义 @ApiResponse
,但没有成功。
SpringFox 中尚不存在该功能,尽管他们已经找人来实现它很长一段时间了。