【问题标题】:URI-based Versioning for AWS API GatewayAWS API Gateway 的基于 URI 的版本控制
【发布时间】:2017-06-25 00:52:07
【问题描述】:

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

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

但是,我能获得 API 网关的最接近的位置是

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

...这是相当落后的。

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

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

【问题讨论】:

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


    【解决方案1】:

    不要将版本路径 (/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)。

    希望这会有所帮助。

    【讨论】:

    • 谢谢,斯特凡诺。但是,如果基本路径必须是唯一的,我如何映射 Numbers API 的 v1?也就是说,我认为我不能拥有 myapi.com/v1/names 和 myapi.com/v1/numbers 还是我误解了什么?
    • 目前您的自定义域名只能有一个路径部分,因此您必须在同一个API中同时拥有名称和号码资源。我们从其他客户那里听说他们希望在域名中包含多个路径部分,这绝对是我们正在考虑的事情 - 感谢您的反馈!
    • 第二个需要更灵活的基本路径。现在是 2018 年 6 月,但仍然不可能。 :(
    • 您好!自从您回答以来已经有一年多的时间了,这些建议在 2018 年仍然有效吗?谢谢!
    • 令人沮丧的是,情况似乎仍然如此。 apigw 似乎无法在单个实现中提供 Uri 版本控制、节流、身份验证和路由,除非您将所有 api 合并到一个 api 中,否则不允许 lambdas 提供他们自己想要的 api在基本路径下注册。
    猜你喜欢
    • 2020-11-26
    • 2016-12-23
    • 2020-10-08
    • 1970-01-01
    • 2016-07-17
    • 2021-10-13
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    相关资源
    最近更新 更多