【问题标题】:Multiple Google Cloud Endpoint API versions in the same Appengine Version同一 Appengine 版本中的多个 Google Cloud Endpoint API 版本
【发布时间】:2023-03-21 03:03:01
【问题描述】:

我有一个处于 alpha 阶段的 android 应用程序,我正在测试如何在服务器端和客户端管理更新。

首次向用户发布。我的 android 正在使用从这个基础生成的类

class and deployed to the default Appengine version.
@Api(name = "myAPIName", version = "v1
public class AbstractEndpoint<T>{
}

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
   <application>myapp</application>
   <module>default</module>
   <version>1</version>
</appengine-web-app>

第二版 我将 Api 版本从 V1 增加到 V2,并在我的第二个应用程序版本中使用生成的类。我将后端部署到相同的默认 appengine 版本 1。

@Api(name = "myAPIName", version = "v2
public class AbstractEndpoint<T>{
}

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
   <application>myapp</application>
   <module>default</module>
   <version>1</version>
</appengine-web-app>

问题是升级后只有后面的使用v2的客户端应用可以case Appengine端点v2,而使用V1的客户端不能再访问api v1。 V2 覆盖 V1 或其他内容,或者 v1 和 V2 无法在同一个 Appengine 实例或其他内容中运行..

曾尝试梳理文档,堆栈溢出寻找线索,但没有多大成功。

【问题讨论】:

    标签: android google-app-engine


    【解决方案1】:

    只需将版本号提高到 v2,端点就不再知道任何 v1,因为它不会在您的项目中的任何位置,并且可能会变得混乱。

    除非您不再支持 v1(显然是这样),否则您需要避免只是增加版本。

    理想情况下,您可以使用 API 版本控制的变体,因为您希望同时支持两个用户(v1 和 v2)。

    以下是您可以使用的方法。

    第一个示例演示了一种版本控制形式,您的 API 的 v2(可能)与 v1 没有任何共同之处:

    @Api(name="myAPIName", version="v1")
    class MyAPI1 {
        ...
    }
    
    @Api(name="myAPIName", version="v2")
    class MyAPI2 {
        ...
    }
    

    或者这个 API 的 v2 以某种方式扩展 v1 的示例:

    @Api(name="myAPIName", version="v1")
    class MyAPI1 {
        ...
    }
    
    @Api(version="v2")
    class MyAPI2 extends MyAPI1 {
        ...
    }
    

    这样,您的 API 的两个版本都将存在于您的应用引擎项目的同一版本中。

    【讨论】:

    • 这是否意味着我必须保留所有代码的副本才能并排拥有相似的版本并支持/v1/v2 api 路径?
    • @JanuszSkonieczny 取决于。您可以使用应用程序版本(应用程序引擎),通常可以在其中部署应用程序的第二个版本。除非您从项目中删除现有的 v1 代码,否则部署项目将导致您的 API 的两个版本都部署到 App 版本 2。这里的用例会有所不同。想打开一个新问题?还是满意?
    • 我理解正确吗?您是否建议应该让现有的应用程序版本(如 123-dot-someapp.appspot.com/_ah/api/v1 运行以支持旧版本 api 并为 124-dot-someapp.appspot.com/_ah/api/v2新版本?
    • 是的。如果这是你的选择。
    猜你喜欢
    • 1970-01-01
    • 2018-02-08
    • 2011-08-03
    • 2020-06-07
    • 2013-08-03
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多