api - AWS API Gateway 基于 URI 的版本控制

标签 api amazon-web-services aws-api-gateway

我正在努力理解 AWS API Gateway 如何让我组织我的 API,以便版本控制很简单。例如,假设我有一个用于从字典中获取单词的简单 API,可以选择通过查询参数过滤结果。我希望在以下位置提供 v1:

https://<my-domain>/v1/names?starts-with=<value>

但是,我能得到的最接近 API Gateway 是在
https://<my-domain>/names/v1?starts-with=<value>

...这是相当倒退。

我在控制台中得到的是带有支持 GET 方法的“v1”资源的“Names API”。我也有我的自定义域设置来将“名称”的基本路径映射到“名称 API”和阶段“测试”。基本路径必须是唯一的,因此放置“v1”只会获得短期胜利;一旦我创建了我的第二个 API(例如 Numbers API),它也会有一个 v1,我将无法创建第二个映射。

非常感谢任何和所有帮助,因为我现在没有想法。

最佳答案

不要将版本路径 (/v1) 创建为 API 中的资源。相反,只需调用 API“Names V1”并开始创建资源 (/names)。当您想要进行重大更改并创建 API 的新版本时,我们建议您创建一个名为“Names V2”的全新 API。再一次,只需创建没有版本路径的资源。

要将这两个 API 结合在一起,您可以使用自定义域名。 API Gateway 中的自定义域名包括完全限定域名和基本路径。创建两个自定义域名:

  • myapi.com/v1 -> 指向 Names V1 API 的 prod 阶段
  • myapi.com/v2 -> 指向 Names V2 API 的 prod 阶段

  • 通过这种方式,您可以在对 v2 进行更改的同时继续修复错误 v1,并独立部署这两个 API。自定义域名会将它们组合在一起并使它们出现在同一域 (myapi.com/v2/names) 下。

    希望这可以帮助。

    关于api - AWS API Gateway 基于 URI 的版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42095592/

    相关文章:

    api - REST API GET 方法

    amazon-web-services - 从另一个 Lambda 函数调用带有代理集成的 Lambda 函数,无需通过 Api 网关

    ios - "message": "Internal server error" issue with Lambda/API Gateway and iOS

    amazon-web-services - 重写 api 网关集成请求中的目标路径

    python - 如何使用请求模块使用 Python 将 JSON 文件的内容发布到 RESTFUL API

    python - 解析嵌套的 json 并将其保存在 csv 中

    api - 如何保护私有(private) REST API

    amazon-web-services - AWS Elastic Search是否为未知的新键设置了架构/映射?

    amazon-web-services - aws key 和 Secret 在 aws cli 上工作但在 jenkins 上不起作用

    mysql - Laravel 权限在远程 Mysql 服务器 (AWS aurora) 上被拒绝