Java 如何在子资源类中使用@Api swagger注释?

Java 如何在子资源类中使用@Api swagger注释?,java,jersey,jersey-2.0,swagger-2.0,swagger-maven-plugin,Java,Jersey,Jersey 2.0,Swagger 2.0,Swagger Maven Plugin,在我的项目中,我有一些根据Jersey框架指南正确实施的子资源 但是,我在生成openapi.json文件(由swagger maven插件生成)时遇到了一个问题。 特别是,我希望能够在实现子资源的类上使用@Apiswagger注释来应用一些属性,例如授权 问题是,如果我在子资源类上使用@Api注释,swagger不仅将这些类视为子资源,还将它们视为资源。结果是,在openapi.json文件中,为每个子资源生成相同的资源(不应该存在) 根资源: @Path("root") @Produces(

在我的项目中,我有一些根据Jersey框架指南正确实施的子资源

但是,我在生成openapi.json文件(由swagger maven插件生成)时遇到了一个问题。 特别是,我希望能够在实现子资源的类上使用
@Api
swagger注释来应用一些属性,例如授权

问题是,如果我在子资源类上使用@Api注释,swagger不仅将这些类视为子资源,还将它们视为资源。结果是,在openapi.json文件中,为每个子资源生成相同的资源(不应该存在)

根资源:

@Path("root")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Api(value = "/root", authorizations = {
        @Authorization(value = "auth", scopes = {})
})
public class ExperienceResource {

    @Path("/sub_a")
    public SubResourceA getSubA() {
        return new SubResourceA();
    }

    @Path("/sub_b")
    public SubResourceB getSubB() {
        return new SubResourceB();
    }
}
次级资源:

@Path("root")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Api(value = "/root", authorizations = {
        @Authorization(value = "auth", scopes = {})
})
public class ExperienceResource {

    @Path("/sub_a")
    public SubResourceA getSubA() {
        return new SubResourceA();
    }

    @Path("/sub_b")
    public SubResourceB getSubB() {
        return new SubResourceB();
    }
}
@Api(authorizations = {
     @Authorization(value = "auth", scopes = {})
})
public class SubResourceA {

    @GET
    ...
}
我也尝试过使用
@Api(value=”“)
@Api(value=“sub_a”)
,但它们不起作用,也不会让事情变得更糟。 显然,如果我删除@Api注释,一切都会正常工作,但我必须逐个操作应用properties操作


有什么建议吗?

解决方案很简单。为了确保实现子资源的类被swagger视为子资源(而不是资源),只需在
@Api
注释中添加属性
hidden=true

   @Api(hidden = true, authorizations = {
     @Authorization(value = "auth", scopes = {})
})
public class SubResourceA {

    @GET
    ...
}

解决办法很简单。为了确保实现子资源的类被swagger视为子资源(而不是资源),只需在
@Api
注释中添加属性
hidden=true

   @Api(hidden = true, authorizations = {
     @Authorization(value = "auth", scopes = {})
})
public class SubResourceA {

    @GET
    ...
}