VimでAPIを叩けたら
もしもVimでAPIを叩く事が出来たら便利ですよね。例えばSlackにメッセージ投稿出来たり、Googleカレンダーからタスクを確認したり、Google翻訳をしたりなど。様々なことがVimの中だけで完結出来るようになります。
目下Vue.js/RoR/Docker環境でAPIサーバを立てて、ブラウザからシェルスクリプトを実行するという事を個人的に行っているのですが、これらもVimで実行することが出来てしまいます。
Vimから移動する時間が少なくなればなるほど作業効率も上がるはずなのでVimでAPIを叩くということには大きな意味があると言えます。今回はwebapi-vimというプラグインを使いVimからAPIを叩いてみたいと思います。
VimでAPIを叩くための準備
まずはwebapi-vimをインストールしましょう。プラグインマネージャは何でも良いのですが、こちらをインストールして下さい。Vimプラグインをインストールしたことがない方はこちらを御覧ください。
webapi-vimの基本的な使い方は以下の通りです。注意してほしいのですがURLのパラメータ部分にはパーセントエンコーディングされた文字列を入力する必要があります。URLエンコードサイトなどで変換したものを貼り付けて下さい。
GETメソッドでリクエストする
webapi#http#get('URL')
POSTメソッドでリクエストする
webapi#http#post('URL', {リクエストボディ})
上記のコマンドをVimのコマンドラインから実行することでVimでAPIを叩けるのです。試しにGoogleにリクエストを飛ばしてみましょう。
:let res = webapi#http#get('https://google.com')
:echo res
ステータス200が取得出来たら成功です。
更にVimでAPIを叩く
今更ですが今回の目標を設定していませんでした。先述のwebapi-vimを使いゴリラ.vimさんのYoutubeチャンネルの新着情報を取得するVimコマンドを作るという事ゴールにしたいと思います。
新着情報を取得するにはRSSフィードを取得すれば良いです。RSSとはサイト情報をXML形式で配信するためのフォーマットの事です。Youtubeでは特定のチャンネルの新着動画を取得したければ下記のURLで取得出来ます。
https://www.youtube.com/feeds/videos.xml?channel_id=【チャンネルID】
それではVimコマンドを作っていきます。
command! GorillaRefer :call s:GorillaRefer()
function! s:GorillaRefer()
let res= webapi#http#get('https://www.youtube.com/feeds/videos.xml?channel_id=UCRnEleGjSPmB3KcOBzi1xZA').content
echo res
endfunction
Vimコマンドを作成したらVimコマンドを読み込むための一行を.vimrcに記述します。
source .vim/command.vim
それでは:GorillaRefer
Exコマンドを実行してAPIを叩いてみて下さい。新着動画のRSSが取得出来たら成功です。
終わりに
今回はシンプルな事に留めましたがVimでAPIが叩ければ多くの事をVimで完結出来るので本当に便利です。内側でcurl
を実行しているとのことですがVimはターミナルとの親和性が本当に高いです。
また自分はゴリラ.vimさんの回し者でも何でも無いのですが、最近よく拝見させてもらっています。Vimmerにとって有益な情報がたくさん紹介されているので興味の有る方は覗かれると良いと思います。