- JSON-RPC エンドポイントを利用するクライアント ライブラリ(Google が公開しているライブラリまたはその他のライブラリ)を使っている場合は、API の REST エンドポイントと通信するクライアント ライブラリに切り替えます。
Javascript のサンプルコード
変更前
// json-rpc request for the list method
gapi.client.rpcRequest('zoo.animals.list', 'v2',
name:'giraffe'}).execute(x=>console.log(x))
変更後
// json-rest request for the list method
gapi.client.zoo.animals.list({name:'giraffe'}).then(x=>console.log(x))
または
- クライアント ライブラリを使っていない場合(直接 HTTP をリクエストしている場合):
- REST URL を使い、
- リクエストの生成方法とレスポンスの解析方法を変更します。
サンプルコード
変更前
// Request URL (JSON-RPC)
POST https://content.googleapis.com/rpc?alt=json&key=xxx
// Request Body (JSON-RPC)
[{
"jsonrpc":"2.0","id":"gapiRpc",
"Method":"zoo.animals.list",
"apiVersion":"v2",
"Params":{"name":"giraffe"}
}]
変更後
// Request URL (JSON-REST)
GET https://content.googleapis.com/zoo/v2/animals?name=giraffe&key=xxx
HTTP Batch
同じ API を指定した内部リクエストの場合、バッチ リクエストの構造はすべて同じです。同じ API の異なるメソッドで処理される場合でも、同じ構造です。それぞれ異なる API を指定した内部リクエストの場合、異なる構造が混在します。Global HTTP Batch エンドポイントが終了すると、異なる構造が混在したバッチはサポートされなくなります。構造が均一なバッチは引き続きサポートされますが、 API 固有 のバッチ エンドポイントによるサポートとなります。
- 現在、複数の構造が混在したバッチ リクエストを行っている場合:
- クライアントのコードを変更し、同じ構造のバッチ リクエストのみを送信するようにします。
サンプルコード
次のサンプルは、2 つの API(urlshortener と zoo)に対する構造が異なるバッチ リクエストを、構造が均一な 2 つのバッチ リクエストに分割する例を示しています。
変更前
// heterogeneous batch request example.
// Notice that the outer batch request contains inner API requests
// for two different APIs.
// Request to urlshortener API
request1 = gapi.client.urlshortener.url.get({"shortUrl": "http://goo.gl/fbsS"});
// Request to zoo API
request2 = gapi.client.zoo.animals.list();
// Request to urlshortener API
request3 = gapi.client.urlshortener.url.get({"shortUrl": "https://goo.gl/XYFuPH"});
// Request to zoo API
request4 = gapi.client.zoo.animal.get("name": "giraffe");
// Creating single heterogeneous batch request object
heterogeneousBatchRequest = gapi.client.newBatch();
// adding the 4 batch requests
heterogeneousBatchRequest.add(request1);
heterogeneousBatchRequest.add(request2);
heterogeneousBatchRequest.add(request3);
heterogeneousBatchRequest.add(request4);
// print the heterogeneous batch request
heterogeneousBatchRequest.then(x=>console.log(x));
変更後
// Split heterogeneous batch request into two homogenous batch requests
// Request to urlshortener API
request1 = gapi.client.urlshortener.url.get({"shortUrl": "http://goo.gl/fbsS"});
// Request to zoo API
request2 = gapi.client.zoo.animals.list();
// Request to urlshortener API
request3 = gapi.client.urlshortener.url.get({"shortUrl": "http://goo.gl/fbsS"})
// Request to zoo API
request4 = gapi.client.zoo.animals.list();
// Creating homogenous batch request object for urlshorterner
homogenousBatchUrlshortener = gapi.client.newBatch();
// Creating homogenous batch request object for zoo
homogenousBatchZoo = gapi.client.newBatch();
// adding the 2 batch requests for urlshorterner
homogenousBatchUrlshortener.add(request1); homogenousBatchUrlshortener.add(request3);
// adding the 2 batch requests for zoo
homogenousBatchZoo.add(request2);
homogenousBatchZoo.add(request4);
// print the 2 homogenous batch request
Promise.all([homogenousBatchUrlshortener,homogenousBatchZoo])
.then(x=>console.log(x));
または
- 現在、構造が均一なバッチ リクエストを実行しており、
- Google API クライアント ライブラリを使っている場合は、最新版にアップデートするだけです。
- Google 以外の API クライアント ライブラリを使っている場合、またはクライアント ライブラリを使っていない場合(直接 HTTP をリクエストしている場合):
- エンドポイントを www.googleapis.com/batch から www.googleapis.com/batch/<api>/<version> に変更します。
- または、単純に API のディスカバリ ドキュメントで「batchPath」の値を確認し、その値を使います。