我通过Open规范指定了我的AWS网关API。规范包含了大量文档,我希望客户端开发人员在与API集成时使用这些文档。但是,我们添加到Open规范中的文档似乎不是从API导出的,因此无法使用。
如前所述,我从JSON中的Open规范开始。我使用CloudFormation AWS::ApiGateway::RestApi资源将其导入到API。
在此之后,我将API部署到一个阶段,最后,使用aws从这个API+stage导出文档:
aws apigateway get-export \
--parameters extensions='documentation' \
--rest-api-id abc123 \
--stage-name api \
--export-type swagger \
./docs.json这个导出似乎缺少了许多重要的文档属性,比如description和pattern。
在我的API中有一个示例Open参数:
{
in: 'path',
name: 'service',
type: 'string',
required: true,
pattern: '^[-a-zA-Z0-9]+$',
description: 'Name of the Service (document) to retrieve.'
}当我用上面的aws命令导出它时,我得到:
{
"name" : "service",
"in" : "path",
"required" : true,
"type" : "string"
}description和pattern属性都已从文档导出中删除,这很糟糕,因为它们实际上是该参数的文档的主要部分。
还值得一提的是,如果我在Also (Swagger+API网关扩展)中导出相同的API,就会得到与文档导出相同的参数定义。
同样值得一提的是,如果有区别的话,集成都是基于Lambda代理的。
发布于 2017-04-05 18:44:05
导入Swagger模板后,API网关将API定义及其文档拆分到两个单独的实体中。这允许您独立地修改和部署这两者。
导出功能只输出部署到某个阶段的任何内容。导入Swagger模板将导致导入API定义和文档部分。但是,看起来您只部署了API定义。在导出文档可用之前,必须显式地发布文档。

正如您所指出的,您还可以使用CLI发布新版本的文档:
aws apigateway create-documentation-version \ --rest-api-id abc123 \ --documentation-version 1 \ --stage-name api
发布于 2017-04-05 18:42:53
在API网关团队的帮助下,这个问题已经解决了。
我的工作流程中似乎缺少了一个步骤。在部署API之后,必须部署文档:
aws apigateway create-documentation-version \
--rest-api-id abc123 \
--documentation-version 1 \
--stage-name api完成此操作后,导出命令将生成文档,而不是以前所显示的API定义。
https://stackoverflow.com/questions/43238034
复制相似问题