问题描述
我有这个开放的 API 注释
@GET
@Operation(method = "Get orders",description = "GetordersRoute",parameters = {
@Parameter(in = ParameterIn.QUERY,name = "batchSize",required = true,schema = @Schema(type = "")),@Parameter(in = ParameterIn.QUERY,name = "fromDate",required = true),name = "filter",required = true)},responses = {
@ApiResponse(description = "The order",content = @Content(mediaType = "application/json",schema = @Schema(implementation = OrderDto.class)))})
@Override
public String handle(@Parameter(hidden = true) Request request,@Parameter(hidden = true) Response response) {
return api.exec();
}
它有效。但是当我添加到 @Parameter
到 @Schema
任何像 schema = @Schema(type = "integer"))
的值时,我得到一个异常:
java.lang.NoSuchMethodError: org.apache.commons.lang3.math.NumberUtils.isCreatable(Ljava/lang/String;)Z
换句话说:@Schema(type = ""))
工作正常,但 @Schema(type = "integer"))
不起作用。
而且不仅是 type
注释中的 @Schema
参数。 @Schema
注释中的任何覆盖参数都会引发此异常。
但是 @Schema
中的 @ApiResponse
适用于任何覆盖参数。
解决方法
我今天在使用时遇到了同样的问题
@ApiResponse(
responseCode = "200",content = @Content(mediaType = "application/json",schema = @Schema(implementation = MyDto.class)),description = "Returns MyDto.")
来自 io.swagger.v3.oas.annotations.media.Schema
的 swagger 2.1.9
。
在尝试了不同的 swagger 版本后(在我的设置中产生了其他错误),它在降级到 swagger 2.0.10
时工作。