【问题标题】:Java swagger-ui doesn't render allowableValues for parameterJava swagger-ui 不为参数呈现 allowableValues
【发布时间】:2020-10-23 21:49:32
【问题描述】:

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

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

以下是 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,它符合我的预期。

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

这里还有什么问题?

【问题讨论】:

  • 建议您使用最新的 swagger 版本。
  • 我在最新的 openapi 2.x 版本 1.6.2 上试了一下,没有任何区别。
  • 我认为我们缺少一些罐子。新版本是否也需要更改注释??
  • 也许你应该改写一下。

标签: spring-boot maven jax-rs swagger-ui openapi


【解决方案1】:

你试过用吗?

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

allowableValues 属性在 @ApiParam. 上运行良好

【讨论】:

  • 所以你说它适用于@ApiParam,但不适用于@ApiImplicitParam?文档明确声明它是受支持的。
  • 我刚刚试过这个,但它不起作用,至少对于 swagger-* 的 1.6.2 版本不起作用。
  • 我得到了这个使用 springfox-2.9.2 和 3.0.0 ,它使用 swagger 版本 1.5.20 :(
猜你喜欢
  • 2017-12-05
  • 2022-01-12
  • 1970-01-01
  • 2018-09-06
  • 2017-01-21
  • 1970-01-01
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多