【问题标题】:Swagger doesn't read Path parameter: @Path("folder{path:.*}")Swagger 不读取 Path 参数:@Path("folder{path:.*}")
【发布时间】:2016-05-12 16:16:42
【问题描述】:

我无法让 Swagger 为具有可选路径参数的 API 调用生成正确的文档。

我正在构建一个类似于文件系统的分层结构的 API。我想调用与获取子资源相同的方法来获取根结构。例如: 获取根目录:/文件夹 获取子文件夹:/folder/path/to

我的 Jax-rs 方法如下所示:

@GET @Path("folder{path:.*}")
Response folderContents(@ApiParam(value = "The folder to list", required = false) @PathParam("path") String path)
{...}

我的方法调用有效,但我的招摇文档不正确且不起作用。当我运行 Swagger-ui 时,它会生成如下所示的 GET 调用:

http://localhost:8080/storage-war/rest/filestore/folder{路径:.*}

我正在寻找一种方法来强制 Swagger 生成正确的签名或重建我的正则表达式,以便我生成的 Swagger 是正确的。

以前我尝试过使用 @Path("folder/{path:.}")*;他生成了正确的 Swagger 文档,但与我的 no path given case 不匹配。我也试过 @Path("/folder{p:/?}{path:(.)}")*;这产生了一个有效的方法调用,但不正确的 Swagger 文档。

有没有一种简单的方法来做我正在寻找的事情?

编辑:

最后,我为根目录和文件夹创建了单独的方法调用。然后我用@ApiOperation(hidden = true) 修饰了根调用。这样,我的代码中有一个额外的方法,但我的 Swagger 文档中只显示了一个方法。

@GET @Path("folder/{path:.*}")
Response folderContents(@PathParam("path") String path)
{...}

@GET @Path("folder")
@ApiOperation(hidden = true)
Response rootContents()
{...}

【问题讨论】:

    标签: java jax-rs swagger resteasy swagger-ui


    【解决方案1】:

    在 swagger 中,总是需要路径参数。了解在许多框架和实践中它们可以是可选的,但在 swagger 定义中它们是必需的。见https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#fixed-fields-7

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-27
      • 2018-07-20
      • 2015-11-22
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多