2

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

使用 endpointV1:没问题。

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

https://staging-dot-[PROJECT-ID].appspot.com部署到 staging 后部署成功,但是当前端调用后端时,请求被后端接收(我可以在 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 插件中的版本。如何配置端点以使用特定的模块版本而不是仅使用主版本?

4

2 回答 2

2

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

部署旧类型端点 (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 之前确认此错误并提出适当的解决方法,那将非常有帮助。

于 2017-07-26T08:42:02.357 回答
0

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

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

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

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

于 2017-08-09T22:11:54.710 回答