Java swagger-ui 不渲染参数的 allowedValues

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

我有一个 SpringBoot、JAX-RS 和 Maven 应用程序。我使用 Swagger 注释来提供有关 REST 服务接口的信息。它基本上可以工作,但是我在处理一些我期望一组有限值的参数时遇到了麻烦。我相信我正确指定了“@Api...”注释,并且我可以在 swagger.json 文件中看到预期结果,但 swagger-ui 似乎没有对该信息执行任何操作。

我的 pom.xml 似乎指定了 swagger 工件的版本 1.5.20。

以下是 Java 接口中被大量省略的摘录:

@GET
@Path("...")
@ApiOperation("...")
@ApiImplicitParams({
    ...
    @ApiImplicitParam(name = "poi_types", value = "Types of locations to include",
                      allowableValues = "pos, wifi, country",
                      dataType = "string", paramType = "query"),
    ...
    })
public Object ...(@QueryParam(...)
                              @ApiParam(name = ..., value = "...")
                  String ...) {

在 swagger.json 中,我看到该条目的以下内容:

    {
        "name" : "poi_types",
        "in" : "query",
        "description" : "Types of locations to include",
        "required" : false,
        "type" : "string",
        "enum" : [ "pos", "wifi", "country" ]
    }

在生成的 UI 中,我看到以下内容:

我在某处看到一些提到所需架构和 swagger-ui 呈现的内容之间可能存在脱节,例如可能需要在参数定义中包含“type”和“enum”属性的“schema”元素。我尝试手动更改 swagger.json 以包含该内容,但没有任何区别。

有人可以提供任何背景吗?

更新

我升级到了 swagger-core 和 swagger-annotations v1.6.2。我还尝试将“allowableValues”放入“@ApiParam”,而不仅仅是“@ApiImplicitParam”。这些变化都没有产生任何影响。我在 UI 中没有看到任何允许值的指示。

这是 @ApiParam 更改后的更改元素:

    {
      "name" : "isocc2",
      "in" : "query",
      "description" : "Country code",
      "required" : false,
      "type" : "string",
      "enum" : [ "en", "es" ]
    }

这就是在 swagger UI 中的显示方式:

我还从浏览器验证了它加载的 swagger.json,它符合我的预期。

为了以防万一,除了 Firefox 之外,我还在 Chrome 中测试了它。

这里还有什么问题吗?

spring-boot maven jax-rs swagger-ui openapi
1个回答
0
投票

您尝试过使用吗?

public Object ...(@QueryParam(...)
                  @ApiParam(name = ..., value = "...", 
                            allowableValues = "pos, wifi, country",)
                  String poi_types) {

allowableValues
属性在
@ApiParam.

上运行良好
© www.soinside.com 2019 - 2024. All rights reserved.