Google app engine 在GAE上使用端点V2进行版本控制

Google app engine 在GAE上使用端点V2进行版本控制,google-app-engine,google-cloud-endpoints,google-cloud-endpoints-v2,Google App Engine,Google Cloud Endpoints,Google Cloud Endpoints V2,我已经部署了应用程序的实时版本及其端点(这没有问题)。 我还希望能够轻松地测试其他版本(例如,登台) 使用endpointV1:没问题 带有端点v2: 如果我部署到实时版本(至少),一切都可以正常工作,但不适用于其他版本 在部署时部署到暂存后,部署成功,但当前端调用后端时,后端会接收到请求(我可以在GAE日志和跟踪列表中看到),但它不会发送到endpointV2或通过endpointV2发送请求,并且响应404未找到: “错误”:[ { “域”:“全局”, “原因”:“未找到”, “消息”:“\

我已经部署了应用程序的实时版本及其端点(这没有问题)。 我还希望能够轻松地测试其他版本(例如,登台)

使用endpointV1:没问题

带有端点v2: 如果我部署到实时版本(至少),一切都可以正常工作,但不适用于其他版本

在部署时部署到暂存后,部署成功,但当前端调用后端时,后端会接收到请求(我可以在GAE日志和跟踪列表中看到),但它不会发送到endpointV2或通过endpointV2发送请求,并且响应404未找到:

“错误”:[ { “域”:“全局”, “原因”:“未找到”, “消息”:“\u003chtml\u003e\u003chead\u003e\n\u003c/head\u003e\n\u003c正文文本=”000000 bgcolor=”文本/html;字符集=utf-8\“\u003e\n\u003c\u003e\u003e404未找到\u003c/title\u003e\n\u003c/head\u003e\u003e\n\u003c正文文本=”000000 bgcolor=”FFFFFFFFFF\u003e\u003e\n\u003e\u003e\u003ch1\u003e\u003h1\u003e }

我现在使用以下maven插件:

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>appengine-maven-plugin</artifactId>
    <version>1.3.1</version>
    <configuration>
        <!-- deploy configuration -->
    </configuration>
</plugin>
<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>endpoints-framework-maven-plugin</artifactId>
    <version>1.0.0</version>
</plugin>

com.google.cloud.tools
appengine maven插件
1.3.1
com.google.cloud.tools
端点框架maven插件
1.0.0

我已经调整了appengine.xml和Google Cloud插件中的版本。我如何配置endpoint以使用特定的模块版本而不是仅使用主版本?

虽然不是真正的答案,但我看到了以下内容:

部署遗留类型终结点(V1)时,一切正常,将显示部署到版本3的API

部署新类型端点(v2)时,例如2-dot-,它取决于在版本上部署的最后一个V1端点

  • 如果它是一个新版本,以前没有部署V1端点,那么它可以工作,并且新端点显示在2点上-
  • 如果以前这里部署了V1端点,它将显示旧的v1api,并且在访问时自然生成404,因为实际运行的GAE版本不同
  • 如果从未部署过该版本(例如asdf-dot-),或者使用默认版本(没有-dot-etc),它将显示默认版本并正确访问它
  • 如果从未部署过V1服务,而是部署了V2服务,那么在部署新的V2服务时,它可以正常工作

因此,似乎有一个bug会阻止你在测试/登台环境中使用稳定的名称,如果你已经有一个V1服务在上面运行的话。如果谷歌的人能确认这个bug并提出一个合适的解决方案,这将非常有帮助,在我不得不做大量昂贵的更改来更改URL之前。

rt对我的回答是:不要重用以前与endpointV1一起使用的版本名

例如,我有一个
测试.MYPROJECT.appspot.com

我现在使用另一个版本:
test.MYPROJECT.appspot.com


关于详细的答案,请看cputoaster的答案。

你说的“版本”是什么意思?endpoint version的应用程序版本?我有相同的问题。我有一个使用endpoints1的项目。如果该项目部署在appengine上的Playerd project上,尝试迁移到endpoints2似乎有效。将同一项目部署到生产项目上的非默认版本(例如,1-dot-xxxx,而2-dot-xxxx是默认值,并且仍然使用旧的appengine内容)然后访问1点版本会给我们一个404。@Julien你能详细说明一下答案吗?我在迁移到v2版本后面临同样的问题。@RafiqAhmad根据你的请求,我发布了一个简短的答案。这为我解决了问题:我使用了一个以前用于endpointV1的登台版本名。使用新鲜的名字。我认为这是一个端点V2bug…但是一旦问题被确定了就很容易绕过它!用一个新的版本名为我工作,而且在删除了现有版本(API不再是可访问的)之后。并再次使用端点进行部署V2@AndréGodoy我试图删除旧的测试版本以获得新的端点V2,但V1似乎仍然挂起,甚至可以使用API资源管理器进行浏览!!-删除版本时是否涉及任何特殊技巧?@JariK删除版本以使用端点V2再次部署它时,我必须在一个更新的项目中,这个限制似乎不适用,所以我不确定。但由于谷歌严重依赖缓存,我认为你应该试试看。@AndréGodoy谢谢!啊,好吧,可能是这样,现在我没有重试,只是开始使用一个新的版本名进行开发。