如何在子资源类中使用@Api摇摇批注?

问题描述 投票:1回答:1

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

但是,在生成openapi.json文件(由swagger-maven-plugin生成)时出现问题。特别是,我希望能够在实现子资源的类上使用@Api招摇批注,以应用一些属性,例如授权。

问题是,如果我在子资源类上使用@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();
    }
}

子资源:

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

    @GET
    ...
}

我也尝试使用@Api(value="")@Api(value="sub_a"),但它们不起作用或使情况更糟。显然,如果我删除@Api批注,则一切正常,但是我被迫通过操作来应用属性操作。

有什么建议吗?

java jersey jersey-2.0 swagger-2.0 swagger-maven-plugin
1个回答
0
投票

解决方案非常简单。为确保实现子资源的类被大摇大摆地视为子资源(而不是资源),只需在hidden = true批注中添加属性@Api

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

    @GET
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.