Swaggerって知ってますか?APIの開発に役立つツールのようです。

仕事で触れる機会があり、これは便利だと思いましたね。

Swaggerとは

色んな種類がありますが、今回はその中の『Swagger Codegen』に注目していきます。

Swaggerアレコレ
  • Swagger UI
  • Swagger Editor
  • Swagger Codegen

Swagger Codegenを使うと何が出来るか。

Json形式で記述したAPI仕様から、様々な言語で使えるModelクラス(いわゆるEntityのようなクラスから、実際にAPIを叩くメソッドを提供するクラスも含む)を生成してくれます。

イメージが付かない方は下記サイトをご覧あれ。

出来るコトが一目瞭然ですね。

Docker Desktop for Windowsのインストール

WindowsでSwagger Codegenを利用する場合、ビルド環境など用意するよりもDockerイメージで取得しちゃった方が早いです。…あと楽です。

WindowsでDockerを使用するには、『Docker Desktop for Windows』というツールのインストールが必要になります。が、今回はリンクで割愛します。

Dockerイメージの取得

Swagger Codegenのインストールから使用方法までは、GitHub上で公開されています。

全部英語で分かりにくいですが、必要なところだけ読んでいくといいでしょう。

Dockerイメージのサイトは以下になります。

サイトの通り、下記コマンドを実行します。※Docker立ち上がっている前提。

docker pull swaggerapi/swagger-codegen-cli

ジェネレート

Dockerイメージを取得したら、後は使うだけ。

API仕様に則ったクラスを生成するコマンド例(Windows版)は下記の通り。

docker run --rm -v %CD%:/local swaggerapi/swagger-codegen-cli generate \
    -i http://petstore.swagger.io/v2/swagger.json \
    -l go \
    -o /local/out/go

コマンドの説明を軽くしておくと、
カレントディレクトリ配下のoutフォルダ配下のgoフォルダに、
http://petstore.swagger.io/v2/swagger.jsonに記載されているAPI仕様に則ったクラスを、
go言語で使用できるように出力する、
となります。

なので実際に使う場合には
①出力先パス(-o)
②元ファイルパス(-i)
③使用言語(-l)
の細かな設定をしてくださいね。

なお、APIがスネークケースでも上記オプションのままだと、出力されるクラスのプロパティはキャメルケースになってしまいます。

言語の性質上、ケースが違うコトでマッピングされない場合などは下記サイトをご参考の上、ファイルを一個追加してコマンドの引数を一個追加してみてください。

終わりに

リクエスト先URLなどを環境変数などとして設定している場合などは、出力されたファイルを一括置換できるようなバッチでも作っておくと楽そうです。

あと、バージョン管理に入れておくと、コマンドの実行で変更されてしまった内容を元に戻すのが楽です。

以上です。

スポンサーリンク