私はAndroidクライアントに公開しているいくつかのエンドポイントクラスを持っています。これらのエンドポイントのメソッドは、エンティティ型パラメータを使用します。エンドポイントが@Apiアノテーションで公開されていることをご存知のように、エンティティタイプのパラメータに@Apiを注釈していません。私が直面している問題は、これらのエンドポイントがエンティティクラスのセットを共有することですが、エンドポイントのライブラリを生成するとき、これらのエンティティタイプは同じクラスの各エンドポイントに対して生成されます。私はすべてのエンドポイントに対して共通のクラスを用意したいと思っていました。私は、問題を詳しく説明するためにあなたに例を挙げてみましょう:Googleクラウドのエンドポイント間でクラスを共有するにはどうすればよいですか?
は、私は、注釈付きのエンドポイントを持っている、と言うことができます:
@Api(
name = "learnerProfileVer1Api",
version = "v1",
resource = "learnerProfileVer1",
namespace = @ApiNamespace(
ownerDomain = "create.account.backend.learncity.com",
ownerName = "create.account.backend.learncity.com",
packagePath = ""
)
)
public class Endpoint1{
@ApiMethod(
name = "insert",
path = "learnerProfileVer1",
httpMethod = ApiMethod.HttpMethod.POST)
public LearnerProfileVer1 insert(LearnerProfileVer1 learnerProfileVer1) {....}
}
、あなたが上記に見ることができる別のエンドポイント、
@Api(
name = "searchApi",
version = "v1",
title = "Search API",
namespace = @ApiNamespace(
ownerDomain = "learncity.com",
ownerName = "Learncity",
packagePath = ""
)
)
public class SearchTutorsEndpoint {
@ApiMethod(name = "searchTutors",
httpMethod = ApiMethod.HttpMethod.POST)
public CollectionResponse<TutorProfileVer1> searchTutors(SearchTutorsQuery searchTutorsQuery, @Nullable @Named("cursor") String cursor, @Nullable @Named("limit") Integer limit) {...}
}
私がLearnerProfileVer1
とエンティティタイプのパラメータを持っている2つのエンドポイント。これらの2つのクラスは、共通するいくつかの他のクラスを使用します。
さて、私はクライアント-LIBSを生成するとき、私は同じクラスで別々のmodel
のパッケージを持っていること、それはこれらのクラスを持っていると私はSearchApi
に対して個別にクライアントのlibを取得することでmodel
パッケージを持っているlearnerProfileVer1Api
ために1を取得。この問題は、クライアントコードをこれらのクライアントライブラリにリンクすると拡大し、同じクラスの3つの異なるバージョンが見つかります。
これらのクラスに1組のclient-libが生成されるようにするソリューションはありますか?