gpt4 book ai didi

java - Swagger - 呈现已声明异常的响应状态

转载 作者:行者123 更新时间:2023-11-30 10:24:19 25 4
gpt4 key购买 nike

我正在 Swagger 编写我的 REST 文档。我已经设置好它并获得了对 SwaggerUi 的访问权限,还看到了我所有配置的 REST 资源及其支持的方法。

在我的后端,我有一个 ControllerAdvice,它为我的所有 Controller 执行全局异常处理。显然,当我尝试创建一个已经存在的资源时,在 Controller 建议中处理的一个示例异常是 ResourceAlreadyExistsException。在那种情况下,我的异常处理程序会以 409 CONFLICT 状态代码进行响应。

@ExceptionHandler(value = ResourceAlreadyExistsException.class)
@ResponseStatus(HttpStatus.CONFLICT)
protected ErrorResponse handleResourceAlreadyExists(ResourceAlreadyExistsException ex, WebRequest request) {
return new ErrorResponse(ex.getMessage());
}

有了这个先决条件,我在 REST Controller 中映射的创建方法如下所示:

@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 中尚不存在该功能,尽管他们已经找人来实现它很长一段时间了。

https://github.com/springfox/springfox/issues/521

关于java - Swagger - 呈现已声明异常的响应状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46585539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com