実装: 部分レスポンス

次の例は、YouTube Data API(v3)で API の部分レスポンスを取得する方法を示しています。

注: API のスタートガイドでは、部分的なリクエストとレスポンスについて詳しく説明します。

v3 API を使用すると、部分的なリソースを取得できるため、アプリケーションで不要なデータの転送、解析、保存を避けることができます。このアプローチにより、API はネットワーク、CPU}、メモリの各リソースをより効率的に使用できます。

API では、partfields の 2 つのリクエスト パラメータがサポートされています。これにより、API レスポンスに含めるリソース プロパティを指定できます。part パラメータは、リソースの挿入または更新を行う API リクエストで設定する必要があるプロパティを識別します。

更新リクエストでは、以前は値が存在していたリソース プロパティに値が指定されていない場合、次の条件が満たされると既存の値が削除されます。

  • プロパティの値はリクエストによって変更できます。たとえば、video リソースを更新する場合、snippet.description プロパティの値を更新することはできますが、snippet.thumbnails オブジェクトの値を更新することはできません。

  • リクエストの part パラメータ値は、プロパティを含むリソース部分を識別します。

たとえば、下記の video リソースを更新するとします。(以下に示すプロパティはすべて API 経由で更新できます。この例に関連しないリソース プロパティは省略しています)。

{
  "snippet": {
    "title": "Old video title",
    "description": "Old video description",
    "tags": ["keyword1","keyword2","keyword3"],
    "categoryId: 22
  },
  "status": {
    "privacyStatus": "private",
    "publishAt": "2014-09-01T12:00:00.0Z",
    "license": "youtube",
    "embeddable": True,
    "publicStatsViewable": True
  }
}

videos.update メソッドを呼び出して、part パラメータ値を snippet に設定します。API リクエストの本文には、次のリソースが含まれます。

{
  "snippet": {
    "title": "New video title",
    "tags": ["keyword1","keyword2","keyword3"],
    "categoryId: 22
  }
}

このリクエストによって、動画のタイトルが更新され、説明が削除されます。タグまたはカテゴリ ID が変更されることはありません。リクエストに snippet.description プロパティの値が指定されていないため、動画の説明が削除されます。

リクエストが更新される部分の 1 つとして part パラメータ値に status が含まれていなかったため、status オブジェクトのプロパティに影響はありません。実際には、API リクエストの本文に status オブジェクトが含まれている場合、リクエストの本文に予期しない部分が含まれているため、API は 400 (Bad Request) HTTP レスポンスを返します。