🦍

VimでGraphQL

2022/05/28に公開

初めに

最近denops-gh.vimという、VimでGitHubのissueを作ったり、編集したりというプラグインを作っています。
このプラグインはGitHubのGraphQLのAPIを使っていて、開発する際は実際にクエリを書いてGraphQLのAPIをたたいています。

これまでGraphiQLというアプリケーションを使っていたんですが、
Vimとアプリケーションを行き来するのは面倒だったので、Vimから直接GraphQLのAPIをたたけるプラグインdenops-graphql.vimを作りました。

本記事はこのプラグインの紹介をしていきます。

プラグインについて

クエリを実行すると次のように、レスポンスの結果がバッファに出力されます。
GraphiQLと同様、変数を編集したりできます。

プラグインで提供しているコマンドは次になっています。

  • :GraphQLSetEndpoint
    GraphQLのエンドポイントを設定
    クエリ実行前にエンドポイントを設定する必要がある

  • :GraphQLExecute
    現在のバッファをクエリとして実行

  • :GraphQLEdit
    変数とレスポンスのバッファを開く
    変数を使用したい場合は実行する必要がある

  • :GraphQLEditHttpHeader
    HTTPヘッダを編集バッファを開く

注意点

本プラグインを使っていく上で、少し注意点があります。

認証

:GraphQLEditHttpHeader は認証ヘッダなどが必要なエンドポイントの場合、ヘッダの値を設定する必要があります。
設定ファイルは $XDG_CONFIG_HOME/denops_graphql/config.json に保存されます。

一例ですが、GitHubの場合は次のように設定をします。

[
  {
    "endpoint": "https://api.github.com/graphql",
    "headers": {
      "Authorization": "bearer token"
    }
  }
]

エンドポイントの設定

:GraphQLSetEndpointで設定したエンドポイントは現在開いている*.graphqlファイルと紐付いています。
つまり、他のgraphqlファイルを実行する場合は再度エンドポイントを設定する必要があります。
これはPOST先の誤爆を防ぐために、あえてこの仕様にしていますが、使っているうちに面倒くさいと感じたら仕様を変えるかもしれません。

さいごに

このプラグインでいくぶんGraphQLの実行が楽になりました。
すべてVimで完結するのはやはりよいことですね。
みなさんも興味あったらぜひ使ってみてください。

Discussion