首页 > 解决方案 > 如何避免类标签被带有招摇的方法标签覆盖?

问题描述

使用 Swagger 1.5.24,并按照文档,我以这种方式写了一个招摇:

@Path("/path1")
@Api(value = "Class for some requests", tags = {"Requests of type 1", "path1"})
public class Requests1 {

    @GET
    @Path("/request1")
    @ApiOperation(value = "Request 1 standard retriever", tags = {"standard", "version 1.0"})
    public Response getRequest1(..) { ... }

    @GET
    @Path("/request1/specific")
    @ApiOperation(value = "Request 1 specific retriever", tags = {"specific", "version 1.1"})
    public Response getRequest1specific(..) { ... }

    @POST
    @Path("/request1")
    @ApiOperation(value = "Request 1 standard inserter", tags = {"standard", "version 1.0"})
    public Response insertRequest1(..) { ... }

    @POST
    @Path("/request1/specific")
    @ApiOperation(value = "Request 1 specific inserter", tags = {"specific", "version 1.0"})
    public Response insertRequest1specific(..) { ... }

}

我想要获得的是在类型 1路径1 的标签下列出类的所有方法,并在标签下列出标准版本 1.0特定版本 1.1 ,仅列出指定了 tose 标签的方法。

例子:

类型 1 的请求

1.1版

... 等等。

问题是为方法设置标签会覆盖类的标签,导致类型为 1和path1的Request 为空列表。

我尝试在 @ApiOperation 属性中使用@Tag属性但它显示以下错误:

注释属性 ApiOperation.tags 的值必须是常量表达式

标签: javaswagger

解决方案


我可以“避免”这个问题,为每个方法设置类的标签,但这样做会降低具体标签的可读性。

例子:

@Path("/path1")
@Api(value = "Class for some requests")
public class Requests1 {

    @GET
    @Path("/request1")
    @ApiOperation(value = "Request 1 standard retriever", tags = {"Requests of type 1", "path1", "standard", "version 1.0"})
    public Response getRequest1(..) { ... }

推荐阅读