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

时间:2017-07-16 19:58:19

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

我使用其端点部署了我的应用的实时版本(没问题)。 我也希望能够轻松地测试其他版本(例如,分期)。

使用endpointV1 :没问题。

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

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

  

"错误":[      {       "域":"全球",       "原因":" notFound",       " message":" \ 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 = #fffff \ 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插件中的版本。如何配置端点以使用特定模块版本而不仅仅是主版本?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

因此,如果您已经在其上运行了V1服务,似乎有一个错误会阻止您使用稳定名称进行测试/暂存环境。如果来自Google的某人可以确认此错误并建议适当的解决方法,那么在我必须进行大量代价更改以更改网址之前,这将非常有用。

答案 1 :(得分:0)

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

E.g。我有testing-dot-MYPROJECT.appspot.com

我现在使用的是其他版本:test-dot-MYPROJECT.appspot.com

对于长篇答案,请看一下cputoaster的答案。