2016-08-30 8 views
2

私は、私は両方のサーバーとクライアント側で更新を管理する方法をテストしていていることアルファ段階でAndroidアプリを持っている...同じAppEngineのバージョンで複数のGoogleクラウドエンドポイントAPIのバージョン

ユーザーへの最初のリリース。私のアンドロイドは、第二リリース 私はV1からV2へのAPIバージョンをインクリメントし、私の第二のアプリのリリースのために、私の中に生成されたクラスを使用して、このベースから

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> 

を生成されたクラスを使用しています。私は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> 

同じデフォルトのAppEngineのバージョンにバックエンドを配備する問題は、アップグレード後にのみ、後者のクライアントがV2を使用してアプリの場合は、AppEngineのエンドポイントv2およびV1を使用して、それらはもはやAPI v1のにアクセスできることができることではありません。 V2がV1などを上書きするか、またはv1とV2の両方が同じAppengineインスタンスや他のもので実行できません。

文書のコーディングを試してみました。

答えて

0

バージョン番号をv2に上げるだけで、エンドポイントはv1を知りません。なぜなら、プロジェクト内のどこにも位置しなくなり、それが乱雑になるからです。

バージョン1をサポートしていない(明らかにそうである)v1をサポートしていない場合を除いて、バージョンを増分しないでください。

理想的には、両方のユーザー(v1 & v2)を並行してサポートする必要があるため、さまざまなバージョンのAPIを使用することが理想的です。

以下は、使用できるアプローチです。

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は同じバージョンのアプリエンジンプロジェクトで使用されます。

+0

これは、似たようなバージョンを並べて、 '/ v1'と'/v2'のAPIパスをサポートするために、すべてのコードのコピーを保持しなければならないということですか? –

+0

@JanuszSkoniecznyに依存します。アプリ版(アプリエンジン)では、アプリの第2版を一般的に導入することができます。プロジェクトから既存のv1コードを削除しない限り、プロジェクトをデプロイすると、両方のバージョンのAPIがAppバージョン2にデプロイされます。 ここではユースケースが異なります。 新しい質問を開きますか?それとも満足? –

+0

私はそれを正しく理解していますか?以前のバージョンのapiをサポートするために実行中の123-dot-someapp.appspot.com/_ah/api/v1のような既存のアプリケーションのバージョンを残しておき、124-dot-someapp.appspot.com/_ah/api/v2新しいバージョン? –