Java Swagger - 将explode 设置为 false 导致查询参数无法正常工作?

问题描述 投票:0回答:1

我正在尝试将我正在使用的 API 上的某些端点的 Explode 设置为 false,但它似乎无法正常工作。我正在使用最新版本的 Swagger(截至本文为 2.2.9)。我想出了以下人为的示例,其中爆炸被忽略:

    @GET
    @Path("bogus")
    @JSONP(queryParam = "callback")
    public void bogus(
            @Parameter(description = "Extended options", in = ParameterIn.QUERY,
                    explode = Explode.FALSE,
                    style = ParameterStyle.FORM
            )
            @QueryParam("extendedOptions") String extendedOptions) {

    }

一般来说,我希望用户可以从我们规范中定义的一些特定选项中进行选择,但让他们知道他们需要以逗号分隔的格式包含这些选项。代码示例:

    @GET
    @Path("bogus")
    @JSONP(queryParam = "callback")
    public void bogus(
            @Parameter(description = "Extended options", in = ParameterIn.QUERY,
                    explode = Explode.FALSE,
                    style = ParameterStyle.FORM
                    array = @ArraySchema(schema = @Schema(type = "array", allowableValues = {"first", "second", "third"}))
            )
            @QueryParam("extendedOptions") String extendedOptions) {

    }

我希望规范能让用户知道他们需要像这样格式化扩展选项:

myapi.com/SomeStuffHere?extendedOptions=first,second,third

不太确定我在这里做错了什么,或者 Swagger 是否不完全支持此选项。据我所知,我的实现似乎符合文档。

java swagger openapi
1个回答
0
投票

终于我找到了适合我的案例的工作解决方案。幸运的是,我不需要将 mediaType 设置为 application/x-www-form-urlencoded,如此处提到的OpenApi doc。另外还有一些未解决的错误:Github bug。这是 openDoc:OpenApi 文档

我的工作解决方案:

        @Parameter(required = false, description = "blah blah",
                explode = Explode.FALSE, array = @ArraySchema(schema = @Schema(implementation = String.class)))
        @RequestParam(required = false) List<String> ids,
© www.soinside.com 2019 - 2024. All rights reserved.