我们有一项服务提供 2 个独立的 Rest API。一种是我们的客户使用的简单 API,另一种是 Web 应用程序使用的内部 API。
\n我们的客户无法访问 Web API,因此我希望能够提供 2 种独立的 OpenApi 规范,一种适用于我们的客户,另一种适用于我们的 Web 开发人员。
\n我找到了一种非常简单的方法来实现我想要的目标,即创建端点、检索 OpenApi 文档并过滤掉属于客户 API 的标签。
\n@Inject\nOpenApiDocument document;\n\n@Operation(hidden = true)\n@GET\n@Produces("application/yaml")\npublic Response customer() throws IOException {\n OpenAPI model = FilterUtil.applyFilter(new MyTagFilter("mytag"), document.get());\n\n String result = OpenApiSerializer.serialize(model, Format.YAML);\n\n return Response.ok(result).build();\n}\n\nRun Code Online (Sandbox Code Playgroud)\n一个问题是,在开发模式下注入的 OpenApiDocument 实例为 null。OpenApiDocumentProducer 似乎缺少 OpenApiHandler 类中存在的一些类加载器魔法。另一个小问题是过滤器 \xe2\x80\x9cMyTagFilter\xe2\x80\x9d 还需要过滤掉任何标记的 PathItem 未使用的模式,并且代码变得有些狡猾。
\n