Swagger @ApiResponses 作为常量值

问题描述 投票:0回答:2

我使用 swagger 创建 RESTful API,并且有几个返回相同错误和响应的端点:

 @GET
    @Path("/some/endpoint")    
    @ApiOperation(
        value = "Some method", 
        notes = "Some method")
    @ApiResponses(
        value = { 
            @ApiResponse(code = 200, message = RestConstants.HTTP_200, response = Response.class),
            @ApiResponse(code = 400, message = RestConstants.HTTP_400, response = Error.class),        
            @ApiResponse(code = 401, message = RestConstants.HTTP_401, response = Error.class),        
            @ApiResponse(code = 403, message = RestConstants.HTTP_403, response = Error.class),        
            @ApiResponse(code = 404, message = RestConstants.HTTP_404, response = Error.class), 
            @ApiResponse(code = 500, message = RestConstants.HTTP_500, response = Error.class) 
        })    
    public Response someMethod(){...}

@ApiResonses 的数量可能即将发生变化。到目前为止,我需要为我的各个端点方法声明所有这些。 有没有办法使用常量值作为 @ApiResponses 值,例如喜欢:

@ApiResponses(value = MY_RESPONSES)

我错过了什么吗?

java annotations swagger
2个回答
1
投票

不幸的是,使用 Swagger 注释无法实现这一点。 为此,

ApiResponse
必须是普通的类/接口而不是注释。


0
投票

有一种方法可以做到这一点:如果您的问题是,“所有”端点都提供相同的 API 响应,您可以使用以下方式注释整个控制器:

@ApiResponses(value = {@ApiResponse(...), @ApiResponse(...)...})<br>
public class Controller{...}

如果您有一个端点,它有另一个 APIResponse,只需将其添加到

@Operation(response={here})

© www.soinside.com 2019 - 2024. All rights reserved.