AWS API网关基于URI的版本控制

AWS API网关基于URI的版本控制,api,amazon-web-services,aws-api-gateway,Api,Amazon Web Services,Aws Api Gateway,我正在努力理解AWSAPI网关希望我如何组织我的API,以使版本控制变得简单。例如,假设我有一个从字典中获取单词的简单API,可以选择通过查询参数过滤结果。我希望此版本的v1可以在以下位置获得: https://<my-domain>/v1/names?starts-with=<value> https:///v1/names?starts-与= 然而,我能得到的最近的API网关是在 https://<my-domain>/names/v1?starts-

我正在努力理解AWSAPI网关希望我如何组织我的API,以使版本控制变得简单。例如,假设我有一个从字典中获取单词的简单API,可以选择通过查询参数过滤结果。我希望此版本的v1可以在以下位置获得:

https://<my-domain>/v1/names?starts-with=<value>
https:///v1/names?starts-与=
然而,我能得到的最近的API网关是在

https://<my-domain>/names/v1?starts-with=<value>
https:///names/v1?starts-与=
。。。这是非常落后的

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


非常感谢所有帮助,因为我现在没有主意了。

不要将版本路径(/v1)创建为API中的资源。相反,只需调用API“namesv1”并开始创建资源(/Names)。当您想要进行突破性的更改并创建新版本的API时,我们建议您创建一个名为“Names V2”的全新API。同样,只需创建资源而不使用版本路径

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

  • myapi.com/v1->指向名称v1 API的prod阶段
  • myapi.com/v2->指向名称v2 API的prod阶段
通过这种方式,您可以在对v2进行更改的同时保持对v1的bug修复,并独立部署这两个api。自定义域名将把它们放在一起,并使它们出现在同一个域(myapi.com/v2/names)下


希望这能有所帮助。

谢谢你,斯蒂法诺。但是,如果基本路径必须是唯一的,如何映射numbersapi的v1?也就是说,我不认为我可以拥有myapi.com/v1/names和myapi.com/v1/numbers,或者我有什么误解吗?目前,自定义域名中只能有一个路径部分,因此必须在同一个API中同时拥有名称和数字资源。我们从其他客户那里听说,他们希望在域名中包含多个路径部分,这肯定是我们正在考虑的事情-感谢您的反馈!第二,需要更灵活的基本路径。2018年6月至今仍不可能:(您好!自从您回答问题已经一年多了,这些建议在2018年仍然有效吗?谢谢!令人沮丧的是,情况似乎仍然如此。apigw似乎无法在单个实现中提供Uri版本控制、节流、身份验证和路由,除非您将所有api合并到一个api中,这然后不允许lambda提供自己的api,因为它们希望在基本路径下注册。