覆盖 io.swagger.v3.oas.annotations.media.Schema 中的任何参数会引发异常

问题描述

我有这个开放的 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.Schemaswagger 2.1.9

在尝试了不同的 swagger 版本后(在我的设置中产生了其他错误),它在降级到 swagger 2.0.10 时工作。