ネットサービスとかGoogleとか豆知識とか。

Index > API > VimeoのAPIを扱う際にはAcceptヘッダでバージョンを指定しておくとよい
API
2015年02月15日 00:56

VimeoのAPIを扱う際にはAcceptヘッダでバージョンを指定しておくとよい

  • このエントリーをはてなブックマークに追加
  • ... PV
スポンサード リンク

Vimeo の API は昨年バージョン3が公開され、2015年2月15日時点で最新バージョンは 3.2 となっています。バージョン3ではバージョン2では取得できなかったデータが取得できるようになっていたり、認証に OAuth 2.0 が使えるようになっていたりして便利なので、旧バージョンの頃から Vimeo の API を使っているならバージョン3に移行することを検討するといいでしょう。

ドットインストールでも無料レッスンの動画は Vimeo を利用しており、統計情報の取得などに API を利用してきましたが、最近になってようやくバージョン 3 の API を使うように移行しました。

さて、ドキュメントにも書かれていますが、バージョン3の API を扱う際にはどのバージョンのレスポンスを受け取るか、リクエスト時に Accept ヘッダで指定することができます。

例えば PHP を例に次のような2つのコードで API をリクエストしたとします。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.vimeo.com/me');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: bearer your_access_token',
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.vimeo.com/me');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: bearer your_access_token',
    'Accept: application/vnd.vimeo.*+json;version=3.2',
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);

最初のコードでは Accept ヘッダを指定していません。2番目のコードでは指定しています。これだけの違いですが、この2つのリクエストに対して返されるレスポンスデータには若干の違いがあります。結論から言うと、最初のリクエストは Accept ヘッダの version 部分に「version=3.0」を指定したものと同一のレスポンスが返されています。

なので、Vimeo の API をリクエストする際には Accept ヘッダをきちんと指定し、意図しないレスポンスが返されないようにしておくといいでしょう。

なお、Accept ヘッダに指定してあるアスタリスクの部分には具体的にリソースの識別子を指定することもできて、user のデータは version 3.2 のレスポンスを受け取りたいけど、video のデータは version 3.0 で受け取りたいといったこともできるようになっています。

Accept: application/vnd.vimeo.user+json;version=3.2,application/vnd.vimeo.*+json;version=3.0

あまり使うことはないかもしれませんが、API のバージョンが上がった時に特定の機能のみ新バージョンのレスポンスを受け取りたいといった時に使えそうです。