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 クライアント バンドルの使用をおすすめします。
クライアント ライブラリを生成する
クライアント ライブラリを生成するには:
API の
app.yaml
ファイルと API サービスクラスを含むディレクトリに変更します。または、--application
オプションを使用して、アプリケーション ディレクトリの他の場所を指定します。Endpoints Frameworks コマンドライン ツールを起動します。次に、例を示します。
lib/endpoints/endpointscfg.py get_client_lib java -bs gradle main.EchoApi
main
は API を含むクラス、EchoApi
は API 名です。クライアント ライブラリが生成されるまで待ちます。処理に成功すると、次のようなメッセージが表示されます。
API client library written to ./echo-v1.zip
クライアント ライブラリの JAR を Android アプリに追加します。
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 コマンドライン ツールによって生成されたクライアント バンドルでは、次のプラットフォームがサポートされます。
- Java 7 以降:
- Android 1.6 以降
- App Engine
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