我们有一项提供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所使用的架构,并且代码变得有些晦涩。
相似的问题:Quarkus: Provide multiple OpenApi/Swagger-UI endpoints