提供单独的OpenApi定义

时间:2020-06-26 13:41:28

标签: openapi quarkus

我们有一项提供2个单独的Rest API的服务。一种是供客户使用的简单API,另一种是Web应用程序使用的内部API。

我们的客户无法访问Web API,因此,我希望能够提供2个单独的OpenApi规范,一个给我们的客户,一个给我们的Web开发人员。

我找到了一种非常简单的方法来实现我想要的目标,方法是创建一个端点,检索OpenApi文档并过滤掉属于客户API的标签。

@Inject
OpenApiDocument document;

@Operation(hidden = true)
@GET
@Produces("application/yaml")
public Response customer() throws IOException {
    OpenAPI model = FilterUtil.applyFilter(new MyTagFilter("mytag"), document.get());

    String result = OpenApiSerializer.serialize(model, Format.YAML);

    return Response.ok(result).build();
}

一个问题是,在开发模式下,注入的OpenApiDocument实例为null。 OpenApiDocumentProducer似乎缺少OpenApiHandler类中存在的一些类加载器魔术。另一个小问题是,“ MyTagFilter”过滤器还需要过滤掉任何未标记的PathItem所使用的架构,并且代码变得有些晦涩。

  • 有没有更好的方法来解决我的问题?
  • 是否可以修复OpenApiDocumentProducer以开发人员模式提供非null且最新的OpenApiDocument?

相似的问题:Quarkus: Provide multiple OpenApi/Swagger-UI endpoints

0 个答案:

没有答案