首页 > 解决方案 > Java swagger-ui 不呈现参数的允许值

问题描述

我有一个 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 中,我看到以下内容:

poi_types 的 swagger-ui 摘录

我在某处看到过一些关于所需架构与 swagger-ui 呈现的内容之间可能存在脱节的提及,例如可能需要在参数定义中包含“类型”和“枚举”属性的“架构”元素。我尝试手动更改 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 中的显示方式:

具有 allowableValues 的参数视图

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

以防万一,我在 Chrome 和 Firefox 中对其进行了测试。

这里还有什么问题?

标签: spring-bootmavenjax-rsswagger-uiopenapi

解决方案


你试过使用吗?

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

allowableValues物业运作良好@ApiParam.


推荐阅读