如何在子资源class中使用@Api swagger注解?
How to use @Api swagger annotation in sub-resource class?
在我的项目中,我有一些子资源,根据 Jersey 框架指南正确实施。
但是,我在生成 openapi.json 文件(由 swagger-maven-plugin 生成)时遇到问题。
特别是,我希望能够在实现子资源的 类 上使用 @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();
}
}
子资源:
@Api(authorizations = {
@Authorization(value = "auth", scopes = {})
})
public class SubResourceA {
@GET
...
}
我也尝试过使用 @Api(value="")
或 @Api(value="sub_a")
,但它们不起作用或使情况变得更糟。
显然,如果我删除 @Api 注释,一切正常,但我被迫逐个操作地应用属性。
有什么建议吗?
解决方案非常简单。为了确保实现子资源的 class 被 swagger 视为子资源(而不是资源)只需在 [=] 添加 属性 hidden = true
12=]注释
@Api(hidden = true, authorizations = {
@Authorization(value = "auth", scopes = {})
})
public class SubResourceA {
@GET
...
}
在我的项目中,我有一些子资源,根据 Jersey 框架指南正确实施。
但是,我在生成 openapi.json 文件(由 swagger-maven-plugin 生成)时遇到问题。
特别是,我希望能够在实现子资源的 类 上使用 @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();
}
}
子资源:
@Api(authorizations = {
@Authorization(value = "auth", scopes = {})
})
public class SubResourceA {
@GET
...
}
我也尝试过使用 @Api(value="")
或 @Api(value="sub_a")
,但它们不起作用或使情况变得更糟。
显然,如果我删除 @Api 注释,一切正常,但我被迫逐个操作地应用属性。
有什么建议吗?
解决方案非常简单。为了确保实现子资源的 class 被 swagger 视为子资源(而不是资源)只需在 [=] 添加 属性 hidden = true
12=]注释
@Api(hidden = true, authorizations = {
@Authorization(value = "auth", scopes = {})
})
public class SubResourceA {
@GET
...
}