我有两个应用my_app
和my_endpoint_app
。我可以使用我想要的URL中的任何版本标签访问my_endpoint_app
,如果它与现有版本不匹配,它将自动路由到默认版本。
示例:
由于未部署josh
版本,https://josh-dot-my_endpoint_app.appspot.com/将使用默认版本进行回复。
如果我尝试对Google Cloud Endpoint服务调用执行相同操作,则会收到Not Found错误。
示例:
失败的https://josh-dot-my_endpoint_app.appspot.com/_ah/api/myendpoint与工作https://my_endpoint_app.appspot.com/_ah/api/myendpoint
我有几个Google AppEngine应用程序通过Cloud Endpoints相互通信。
在正常使用情况下,这是可以的,因为我事先知道版本并避免这些错误。在我们的开发环境中,这分崩离析。为了支持功能分支和单独测试,我们使用-V
的{{1}}开关将代码推送到appspot。
实施例:
appcfg.py
现在我可以在appcfg.py -A my_app -V josh update .
访问我的功能分支了。为了支持某些版本标签hackery,我动态计算正确的端点应用程序,使用https://josh-dot-my_app.appspot.com
之类的东西进行调用,然后在那里进行服务调用。由于动态版本标签不存在,因此失败。如果我推送具有该名称的版本标签,则按预期完成。
有没有办法让Cloud Endpoints回答不存在的版本标签主机名?
我想支持的方案
https://my_endpoint_app.appspot.com/_ah/api/myendpoint
主应用程序URL,默认路由的路由
https://josh-dot-my_endpoint_app.appspot.com/_ah/api/myendpoint
版本不存在,应该路由到默认版本
https://new-feature-dot-my_endpoint_app.appspot.com/_ah/api/myendpoint
版本新功能存在,应该路由到新功能版本,以便我们可以在合并到主代码分支之前单独测试新代码。这将是当前端点可以使用的内部apis,而不会更改端点完成的内容。 (绩效改进等)