API 和 appengine-web.xml 版本之间的区别

Difference between API and appengine-web.xml versions

我是 Google App Engine 的新手,我目前有一个功能正常的端点,我可以使用 Build > Deploy Module to App Engine... 菜单项在 Android Studio 中部署它。

部署时,我注意到 Android Studio 使用来自 appengine-web.xml 的版本号,并且它是部署后在控制台中使用的版本号。我想知道,API 版本号是什么意思,它应该与 Endpoint 版本匹配吗?

例如,我的端点 class 是这样配置的 (v2):

@Api(
        name = "myApi",
        version = "v2",
        namespace = @ApiNamespace(
                ownerDomain = "backend.mydomain",
                ownerName = "backend.mydomain",
                packagePath = ""
        )
)

但是如果我的 appengine-web.xml 配置为版本 1,后端代码将被推送到版本 1,但会继续使用 API 版本 2。

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>myproject</application>
    <version>1</version>
    <threadsafe>true</threadsafe>

    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
    </system-properties>
</appengine-web-app>

这是个问题还是不好的做法?

没关系。 App Engine 中的版本对应于实例上运行的已部署代码版本。您可以拥有多个应用程序引擎版本,但它们各自是各自不同的部署。 Cloud Endpoints 中的版本被视为 api 版本,您可以在同一应用引擎版本中拥有一个或多个 运行。

考虑 App Engine 版本的一个好方法是传统的开发、暂存、生产范例。您可以部署 <version>dev</version><version>stage</version><version>prod</version>,然后将 prod 设置为默认服务版本。然后,每个 App Engine 版本都可以托管 api 个版本 v1v2v3.