我在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的后一个客户端应用程序才会出现Appengine端点v2,而那些使用V1的客户端应用程序无法再访问api v1。 V2覆盖V1或其他东西,或者v1和V2都无法在相同的Appengine实例或其他内容中运行..
尝试梳理文档,并堆叠溢出以获取线索,但没有太大成功。
答案 0 :(得分:0)
通过将版本号提升到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的两个版本都将存在于相应版本的应用引擎项目中。