swagger 如何整合来自不同API的openapi规范?

6yjfywim  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(213)

我想问一下,是否有一种方法可以轻松地从不同的API中聚合OpenApi规范?
目前,我们为每个API使用Swagger,并在其中添加了自定义逻辑来进行身份验证,我们还为不同的可访问性规则添加了规则。
然而,以某种方式聚合所有这些API并将身份验证、访问逻辑保持在同一位置会方便得多。

范例:

我们有两个单独的微服务,它们具有单独的API和单独的地址
API 1本地主机:5000

  • 具有订单API的单独项目
  • 可在此URL下访问单独的swagger

API 2 URL本地主机:5001

  • 具有通知API的单独项目
  • 可在此URL下访问单独的swagger
    我们想要的最终结果是:

某种聚合框架或示例项目,它能够将Swagger生成的Open API规范从这些项目中提取出来,并基本上将其显示为某个新URL下的一个规范
网址本地主机:5002

  • 我们得到了聚合的Swagger或其他一些框架,这些框架显示了来自Orders API和Notifications API的端点

基本上,我认为这个问题在使用微服务的人中很常见,这些微服务需要从多个微服务中向客户端提供某种公共API规范。

deyfvvtc

deyfvvtc1#

如果我没理解错您的问题,建议的场景是:

jgovgodb

jgovgodb2#

我想问一下,是否有一种方法可以轻松地从不同的API中聚合OpenApi规范?
您可以使用APIMatic的API规范合并功能,首先合并规范,然后将合并后的输出转换为OpenAPI的格式。
1.按如下方式构建目录:

dir\
  api1\  
    openapi.json
  api2\
    openapi.json
  APIMATIC-META.json

1.一个极简的APIMATIC-META.json可以像这样来实现合并:

{
    "MergeConfiguration": {
        "MergedApiName": "Public API",
        "MergeApis": true,
        "MergeSettings": {
          "SkipCodeGenValidation": true
       }
    }
}

1.压缩目录,上传并通过他们的网站转换到OpenAPI v3,以获得合并/聚合的OpenAPI输出。这里有一个链接,提供了上传和执行转换的分步指南:https://docs.apimatic.io/manage-apis/api-merging/#transforming-the-zipped-file
如果您希望实现流程自动化,APIMatic也有一个API:https://www.apimatic.io/docs/api#/http/api-endpoints/transformation/transform-via-file
您还可以在此处查看有关为合并的API规范生成统一门户/文档的详细信息:https://docs.apimatic.io/manage-apis/api-merging/。这一节讨论了覆盖服务器URL等信息的能力。

相关问题