【发布时间】: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