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

n1bvdmb6  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(889)

我有这个开放的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"))不工作。
不仅@Schema注解中的type参数。@Schema注解中的任何重写参数都会抛出此异常。
但是@ApiResponse中的@Schema可以很好地使用任何覆盖参数。

ars1skjm

ars1skjm1#

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

@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时工作正常。

相关问题