【问题标题】:Versioning with endpoint V2 on GAE在 GAE 上使用端点 V2 进行版本控制
【发布时间】:2017-07-16 19:58:18
【问题描述】:

我的应用程序的实时版本部署了它的端点(这没问题)。 我还希望能够轻松测试其他版本(例如分期)。

使用 endpointV1:没问题。

使用端点V2: 如果我部署到实时版本,一切正常(https://[PROJECT-ID].appspot.com,但不适用于其他版本。

部署到staging at https://staging-dot-[PROJECT-ID].appspot.com后部署成功,但是当前端调用后端时,请求被后端接收(我在GAE日志和跟踪列表中可以看到),但它没有它到或通过 endpointV2 并响应 404 NOT FOUND:

“错误”:[ { “域”:“全球”, “原因”:“未找到”, "消息": "\u003chtml\u003e\u003chead\u003e\n\u003cmeta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\"\u003e\n\u003ctitle\ u003e404 NOT_FOUND\u003c/title\u003e\n\u003c/head\u003e\n\u003cbody text=#000000 bgcolor=#ffffff\u003e\n\u003ch1\u003eError: NOT_FOUND\u003c/h1\u003e\n\u003c/body \u003e\u003c/html\u003e\n" }

我现在使用以下 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>

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

【问题讨论】:

  • “版本”是什么意思?端点版本的应用程序版本?
  • 我也有同样的问题。我有一个使用endpoints1 的项目。如果项目部署在 appengine 的游乐场项目上,则尝试迁移到端点 2 似乎可行。将同一个项目部署到生产项目的非默认版本(例如,1-dot-xxxx,而 2-dot-xxxx 是默认的并且仍然使用旧的 appengine 的东西),然后访问 1-dot-版本给出我们是 404。
  • @Julien 你能详细说明一下答案吗?迁移到 v2 版后,我面临同样的问题。
  • @RafiqAhmad 根据您的要求,我发布了一个简短的答案。

标签: google-app-engine google-cloud-endpoints google-cloud-endpoints-v2


【解决方案1】:

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

在部署旧类型端点 (V1) 时,一切正常,https://3-dot-xx.appspot.com/_ah/api/discovery/v1/apis 将显示部署到版本 3 的 API

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

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

因此,如果您已经在其上运行了 V1 服务,那么似乎有一个错误会阻止您将稳定名称用于测试/暂存环境。如果 Google 的某个人能够在我不得不进行大量昂贵的更改来更改 URL 之前确认此错误并提出适当的解决方法,那将非常有帮助。

【讨论】:

  • 这为我解决了这个问题:我使用的是过去与 endpointV1 一起使用的暂存版本名称。使用新名称时问题消失。我认为这是一个 endpointV2 错误......但一旦发现问题就很容易解决它!
  • 使用新版本名称对我有用,但在删除现有版本(并且 API 不再可访问)并使用端点 V2 再次部署之后也是如此
  • @AndréGodoy 我试图删除旧的测试版本以获得新的 Endpoints V2,但 V1 似乎仍然存在,甚至可以使用 API 资源管理器进行浏览! - 删除版本时有什么特别的技巧吗?
  • @JariK 删除版本以使用 Endpoints V2 再次部署它时,我不得不等待大约 24 小时才能使其正常工作。在一个较新的项目中,这个限制似乎并不适用,所以我不确定。但由于 Google 严重依赖缓存,我认为您应该尝试一下。
  • @AndréGodoy 谢谢!嗯,好吧,可能是这样,现在我没有重试,只是开始使用新的新版本名称进行开发。
【解决方案2】:

对我来说,简短的回答是:不要重复使用以前与 endpointV1 一起使用的版本名称

例如我有一个testing-dot-MYPROJECT.appspot.com

我现在使用不同的版本:test-dot-MYPROJECT.appspot.com

对于长答案,请查看 cputoaster 的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 2019-05-02
    相关资源
    最近更新 更多