首页 > 解决方案 > 覆盖 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),
                    @Parameter(in = ParameterIn.QUERY, 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引发此异常。

但是@Schemain@ApiResponse可以与任何覆盖参数一起正常工作。

标签: javaopenapiswagger-3.0

解决方案


我今天在使用时遇到了同样的问题

@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 2.0.10.


推荐阅读