VimをRESTクライアントとして使えるプラグイン「roast.vim」を試してみた

2019-03-26Vim

はじめに

Amazon API Gateway を触りだすと、RESTクライアントアプリが欲しくなってきました。

今までは curl で実行していましたが、コマンドだと何度も実行するときに面倒だし、だからといって Postman のようなツールを使って CUIの世界から飛び出す のもなぁと思っていたところ良さそうなプラグインを見つけました。

roast.vim プラグイン

GitHub - sharat87/roast.vim

RESTクライアントとしても使用できるVim用のHTTPクライアント です。

vim-roast

ViMエディタプラグインとしてのHTTPクライアントということです。

丁寧に動画のデモも用意されています。

必要なもの

利用するために必要なものは以下のものとのことです。

  • +python3環境
  • ViM 8.1で動作確認済み

検証環境

$ uname -moi
x86_64 MacBookPro11,4 Darwin

$ vim --version| head -n 1
VIM - Vi IMproved 8.1 (2018 May 18, compiled Mar 11 2019 08:36:40)

$ vim --version| grep python
+comments          +libcall           -python            +visualextra
+conceal           +linebreak         +python3           +viminfo

試してみる

早速試してみます。
( ここではすでにプラグインのインストールが終わっているものとします。 )

RESTクライアント機能を有効にするには、以下のいずれかの拡張子を持つファイルを開きます。

  • .http
  • .roast

新規に作成してみます。

$ vim sample.roast

テスト用のAPIサービスをコールしてみます。
以下のサービスを利用します。

ファイル内に以下の命令を記述します。

GET http://httpbin.org/get answer=42

記述後、 Vimの ノーマルモード で上記行にカーソルを合わせて 「Enter」キーを押し ます。
記述に問題がなければ、API実行結果(JSONフォーマット)が別スクリーンで表示されるはずです。

{
  "args": {
    "answer": "42"
  },
  "headers": {
    "Accept-Encoding": "identity",
    "Host": "httpbin.org"
  },
  "origin": "221.250.87.66, 221.250.87.66",
  "url": "https://httpbin.org/get?answer=42"
}

また、URLの記述行は 青緑色 にハイライトされます。リクエストが正常にコールされたことを示すサインです。

記法を振り返る

先程の記法について解説します。

GET http://httpbin.org/get answer=42

一番左は 「HTTPメソッド」 になります。
今回は GET 方式でAPIコールしましたが、 POST / PUT / DELETE / OPTIONS などが使えます。(試してはない)

真ん中の部分はAPIの「エンドポイント」になります。
http://httpbin.org/get というURLに対してリクエストを投げているわけですね。

一番右は「クエリ文字列」です。
ちょっと特殊なのが通常のURLでいう ?&「スペース」 で記述するという点です。
複数の「クエリ文字列」を付与したい場合は以下のように実行します。

GET http://httpbin.org/get x=1 y=2 z=3

POSTでコールしたい場合

「POST」でコールしたい場合は以下のように実行します。

POST http://endpoint.com/test << EOF
{{
    x: 1
    y: "2"
}}
EOF

ここでは、リクエストボディにJSONを渡したい場合の記述を例に上げています。
先程の「GET」の部分が「POST」になっています。

リクエストボディのJSON部分についてはちょっと記述が特殊ですね。
{ ... } の記述が変数の展開のための記法となっているようで(つまり変数が使えるプラグイン)、変数でないということを示すために {{ ... }} という記述を使います。
{{ ... }}{ ... } の形式に置換されるということですね。

API Gateway経由のPOSTリクエストを呼び出したい場合

「リクエストヘッダ」に x-api-key を付与しないといけないのですが、エンドポイントを記述している行の上に プロパティ名: 値 の形式で記述することで「リクエストヘッダ」を追加できます。

x-api-key: ****************************************
PUT https://**********.execute-api.ap-northeast-1.amazonaws.com/prod/test.json << EOF
{{
    "time": 10,
    "member_id": "20",
    "action": "30",
    "location": "40"
}}
EOF

ひとこと

curl を直接叩く場合と比べて、ファイルにリクエスト内容を残しながら試行錯誤できる点がよいかな、と思いました。
しばらく使ってみたいと思います。

2019-03-26Vim