F.Ko-Jiの「一秒後は未来」

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

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 のバージョンが上がった時に特定の機能のみ新バージョンのレスポンスを受け取りたいといった時に使えそうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など