当前位置: 首页 > 知识库问答 >
问题:

Open API 中指定的文档不会从 AWS API Gateway 导出

哈雅珺
2023-03-14

如前所述,我从JSON中的开放API规范开始。我使用云信息AWS::ApiGateway::RestApi资源将其导入API网关。

在此之后,我将API部署到一个阶段,最后,使用aws cli从此API阶段导出文档:

aws apigateway get-export \
    --parameters extensions='documentation' \
    --rest-api-id abc123 \
    --stage-name api \
    --export-type swagger \
    ./docs.json

my API中的开放式API参数示例:

{
    in: 'path',
    name: 'service',
    type: 'string',
    required: true,
    pattern: '^[-a-zA-Z0-9]+$',
    description: 'Name of the Service (document) to retrieve.'
}

当我用上面的aws-cli命令导出它时,我得到:

{
    "name" : "service",
    "in" : "path",
    "required" : true,
    "type" : "string"
}

说明模式属性都已从文档导出中剥离,这是不好的,因为它们确实是此参数文档的主要部分。

还值得一提的是,如果我在AWS控制台(Swagger API网关扩展)中导出相同的API,我将获得与文档导出相同的参数定义。

还值得一提的是,这些集成都是基于Lambda代理的,如果这有所不同的话。

共有2个答案

萧晔
2023-03-14

在 API Gateway 团队的帮助下,此问题已得到解决。

aws apigateway create-documentation-version \
    --rest-api-id abc123 \
    --documentation-version 1 \
    --stage-name api

完成此操作后,export命令将生成文档,而不是API定义,正如它以前所做的那样。

唐康安
2023-03-14

导入 Swagger 模板后,API 网关会将 API 定义及其文档拆分为两个单独的实体。这允许您独立修改和部署两者。

导出功能仅导出部署到阶段的任何内容。导入 Swagger 模板将导致导入 API 定义和文档部分。但是,看起来您只部署了 API 定义。您必须显式发布文档,然后才能在导出中提供该文档。

正如您所指出的,您还可以使用 CLI 发布新版本的文档:

 类似资料:
  • 我正在尝试使用OpenAPI 3.0记录一个micros服务。该服务返回具有任何字段名并且可以包含任何数组、字符串、数字、true、false、null但不包含对象的Json。字符串可能包含ISO日期。只有很少的已知字段名(例如“@id”) 示例: 无效样本: 所以我的第一次尝试是: 我检查了OpenAPI字典规范,建议使用: 但这将允许对象。 我走对了吗?或者说“任何名称、任何值,只是不是另一个

  • 是否可以使用接口而不是实现这些接口的控制器类来生成swagger ui文档? 将文档放在实现类中会使它看起来杂乱无章。Springfox有这个选项,它在springdoc中可用吗?如果是,怎么做?

  • 我正在使用OpenAPI/Swagger来指定我的API。 有一件事我找不到,那就是如何指定一个集合。 我正在使用https://editor.swagger.io/我输入了整个API。对于要指定为集的属性,我编写了以下代码: 我本以为uniqueItems会起作用并生成一个Set,但事实并非如此。相反,生成了以下代码: 有没有办法生成类似 而是? 我在SO中找到了一个可能的解决方案,但这需要在p

  • 我试图从我的代码库生成数据来填充OpenAPI 3.0输入。 我有一个restendpoint,用于将文件上载到服务器。 我有一个表单作为聚合vaadin上传组件,用于上传文件。路径是,表单参数名是。表单正确地将文件上传到服务器,所以这不是问题所在。 服务器endpoint使用超文本标记语言窗体规范中的XQRS RestXQ上传文件来实现。 我正在尝试为多部分文件上传的OpenAPI 3.0UI创

  • 如果仅是想要解析HTML文档,只要用文档创建 BeautifulSoup 对象就可以了.Beautiful Soup会自动选择一个解析器来解析文档.但是还可以通过参数指定使用那种解析器来解析当前文档. BeautifulSoup 第一个参数应该是要被解析的文档字符串或是文件句柄,第二个参数用来标识怎样解析文档.如果第二个参数为空,那么Beautiful Soup根据当前系统安装的库自动选择解析器,

  • 如果仅是想要解析HTML文档,只要用文档创建 BeautifulSoup 对象就可以了.Beautiful Soup会自动选择一个解析器来解析文档.但是还可以通过参数指定使用那种解析器来解析当前文档. BeautifulSoup 第一个参数应该是要被解析的文档字符串或是文件句柄,第二个参数用来标识怎样解析文档.如果第二个参数为空,那么Beautiful Soup根据当前系统安装的库自动选择解析器,