次の例は、YouTube Data API(v3)で部分的な API レスポンスを取得する方法を示しています。
注: API のスタートガイドでは、部分リクエストと部分レスポンスの詳細を確認できます。
v3 API では、部分的なリソースの取得が許可されており、実際には必要なデータの転送、解析、保存を回避するために必要とされています。このアプローチにより、API はネットワーク、CPU}、メモリの各リソースをより効率的に使用できます。
この API は、part と fields の 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 プロパティの値が指定されていないため、動画の説明が削除されます。
part パラメータ値に、リクエストで更新される部分として status が含まれていないため、status オブジェクトのプロパティはまったく影響を受けません。実際、API リクエストの本文に status オブジェクトが含まれている場合、リクエスト本文に予期しない部分が含まれているため、API は 400 (Bad Request) HTTP レスポンスを返します。