我使用 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)
我错过了什么吗?
不幸的是,使用 Swagger 注释无法实现这一点。 为此,
ApiResponse
必须是普通的类/接口而不是注释。
有一种方法可以做到这一点:如果您的问题是,“所有”端点都提供相同的 API 响应,您可以使用以下方式注释整个控制器:
@ApiResponses(value = {@ApiResponse(...), @ApiResponse(...)...})<br>
public class Controller{...}
如果您有一个端点,它有另一个 APIResponse,只需将其添加到
@Operation(response={here})