App Engine コマンドライン ツール用 Cloud Endpoints Frameworks

このページでは、Endpoints Frameworks コマンドライン ツールを使用して、Python バックエンド API(サーバーで実行されるコード)からクライアント ライブラリを生成する方法について説明します。Java アプリまたは Android アプリでこのライブラリを使うと、API を呼び出すことができます。

Endpoints Frameworks コマンドライン ツールを使用すると、アプリケーションでの API アクセスを可能にするクライアント ライブラリ バンドルを生成できます。クライアント ライブラリを生成すると、Endpoints Frameworks コマンドライン ツールによって、API のサーフェスを記述するディスカバリ ドキュメントが自動生成されます。

Endpoints Frameworks コマンドライン ツールである endpointscfg.py は、Endpoints Frameworks ライブラリから入手できます。pip を使用して Endpoints Frameworks ライブラリをインストールする方法については、Endpoints Frameworks ライブラリをインストールするをご覧ください。以下のコマンドでは、lib というディレクトリに Endpoints Frameworks ライブラリがインストールされていることを前提としています。さらに、これらの手順では、バックエンド API を作成してあるものと想定しています。サンプルコードで Endpoints Frameworks コマンドライン ツールを使用する例については、Python チュートリアルの Endpoint Frameworks を参照してください。

API からクライアント ライブラリ バンドルを生成する

Endpoints Frameworks コマンドライン ツールを使用して生成できるクライアント バンドルの種類は次のとおりです。

  • Maven: このバンドルには、Endpoints Frameworks と Google API クライアント ライブラリの依存関係を伴う pom.xml ファイルが含まれています。readme.html ファイルには、さまざまなタイプのクライアント アプリケーションのために pom.xml ファイルに何を追加する必要があるか、また、Maven を使用して API 用のクライアント ライブラリを構築する方法に関する詳細情報が提供されています。

  • Gradle: このバンドルには、Endpoints Frameworks と Google API クライアント ライブラリの依存関係を伴う build.gradle ファイルが含まれています。readme.html ファイルには、さまざまなタイプのクライアント アプリケーションのために build.gradle ファイルに何を追加する必要があるか、また、Gradle を使用して API 用のクライアント ライブラリを構築する方法に関する詳細情報が提供されています。

  • デフォルトのクライアント バンドル: このバンドルには、すべての依存関係ライブラリと生成された source.jar ファイルが含まれています。このファイルはクライアント内で API の呼び出しに使用される Java ライブラリです。このバンドルにより、OAuth を含む Google API クライアント ライブラリのすべての機能をクライアントで利用できるようになります。readme.html ファイルには、各種のクライアント アプリケーションに必要な .jar ファイルのリストと、クライアント ライブラリの使用に関するその他の詳細が記載されています。

Android アプリでクライアント ライブラリをお使いの場合には、Gradle クライアント バンドルの使用をおすすめします。

クライアント ライブラリを生成する

クライアント ライブラリを生成するには:

  1. API の app.yaml ファイルと API サービスクラスを含むディレクトリに変更します。または、--application オプションを使用して、アプリケーション ディレクトリの他の場所を指定します。

  2. Endpoints Frameworks コマンドライン ツールを起動します。次に、例を示します。

    lib/endpoints/endpointscfg.py get_client_lib java -bs gradle main.EchoApi
    

    main は API を含むクラス、EchoApi は API 名です。

  3. クライアント ライブラリが生成されるまで待ちます。処理に成功すると、次のようなメッセージが表示されます。

    API client library written to ./echo-v1.zip
    
  4. クライアント ライブラリの JAR を Android アプリに追加します。

  5. API コードを変更するたびに、上記の手順を繰り返します。

output オプションで別の出力ディレクトリを指定しない限り、クライアント ライブラリ バンドルは現在のディレクトリに出力されます。

コマンドラインの構文

基本的な構文は次のようになります。

/path-to/your-app/lib/endpointscfg.py get_client_lib TARGET_LANG OPTIONS CLASS_NAME

ここで

  • TARGET_LANG は、作成するクライアント バンドルの種類です。現在のところは java(Android などの Java クライアント用)を入力しなければなりません。
  • OPTIONS を指定する場合は、オプションの表に記載された 1 つ以上の項目を指定します。
  • CLASS_NAME は、API の完全修飾クラス名です。

オプション

以下のオプションを使用できます。

オプション名 説明
application デフォルトでは、ツールは現在のディレクトリにあるバックエンド API から生成を行います。
別のディレクトリを使用して生成するには、app.yaml と API を実装するサービスクラスを含んだディレクトリのパスを指定します。
--application /my_path/my_api_dir
build-system 生成されるクライアント バンドルの種類を指定できます。Android 向け Gradle クライアント バンドルには gradle を、Maven クライアント バンドルには maven を、または依存ライブラリとソース jar だけを含むバンドルには default を指定します(またはこのオプションを省略します)。 --build-system=gradle
-bs gradle
hostname ディスカバリ ドキュメント rootURL を指定します。
このオプションは、バックエンド API プロジェクト app.yaml[YOUR_APP_ID].appspot.com)の application エントリから得られるデフォルト値と、API のデコレータで定義された hostname をオーバーライドします。
このオプションはホスト名 localhost をローカルテスト用の rootURL に変更するときなどに使用できます。
--hostname localhost
format REST でサポートされているのはデフォルト値の rest だけであるため、この項目は指定しないでください。 必要ではありません、デフォルトを使用してください。
output 出力の書き込み先ディレクトリを設定します。
デフォルト値: ツールの起動元ディレクトリ。
--output /mydir
-o /mydir

サポートされるクライアント プラットフォーム

Endpoints Frameworks コマンドライン ツールによって生成されたクライアント バンドルでは、次のプラットフォームがサポートされます。

API から OpenAPI ドキュメントを生成する

endpointscfg.py ツールでは、API バックエンドから OpenAPI ドキュメントを生成するためのコマンドを使用できます。コマンドの構文は次のとおりです。

lib/endpoints/endpointscfg.py get_openapi_spec
    [-h]
    [-a APPLICATION]
    [--hostname HOSTNAME]
    [-o OUTPUT]
    service [service ...]

positional arguments:
  service               Fully qualified service class name.

optional arguments:
  -h, --help            Show this help message and exit.
  -a APPLICATION, --application APPLICATION
                        The path to the Python App Engine application.
  --hostname HOSTNAME   Default application hostname, if none is specified for the API service.
  -o OUTPUT, --output OUTPUT
                        The directory to store output files.
  --x-google-api-name   Add the 'x-google-api-name' field to the generated OpenAPI document.

たとえば、echo のサンプルを使用すると次のようになります。

$ lib/endpoints/endpointscfg.py get_openapi_spec --hostname=echo-example.appspot.com main.EchoApi
OpenAPI spec written to ./echov1openapi.json