[Golang]Echoで簡単にSwaggerを利用する
Contents
はじめに
golangとechoを使ってJSON APIのswaggerを生成する方法について書きます。
swag というツールが提供されているので、基本的にはこのツールを使っていきます。
今回作ったサンプル置き場
使い方だけ見たい方はgithubのコードを見るのがいいと思います。
https://github.com/ken-aio/go-echo-sample/tree/v2
流れ
swagを使ったswaggerドキュメントの生成は↓の流れで行います。
- コメントを書く
- 自動生成する
- swagger uiのhandlerを設定する
- swaggerを開く
実際にサンプルプロジェクトを使ってswaggerを作ってみます。
1. コメントを書く
API全体の設定
まずは全体の設定を main
の中に書いていきます。
中身は利用に関する規約のURL、ライセンス情報、認証用のhttp header情報などの設定が出来ます。
今回は内部で使うだけの場合を想定して、最低限の設定だけをしてみます。
※ 詳細の設定内容はこちら
|
|
各エンドポイントの設定
グループに所属しているユーザの一覧を取得するAPIのswagger docを設定します。
group_idをpathパラメータに受け取って、性別(gender)をqueryパラメータで受け取ります。
※ 詳細の設定パラメータはこちら
|
|
2. 自動生成する
設定した内容に従ってswagger uiのもととなるyamlを自動生成します。
まずはswagのコマンドをインストールします。
|
|
自動生成します。
生成すると、docsというdirが出来て、この中にswaggerのjsonとyamlが生成されます。
|
|
3. swagger uiのhandlerを設定する
次にechoからswagger uiを呼び出せるようにhandlerの設定を行います。
echo-swagger というライブラリがあるので、こちらを使ってechoからswagger uiを呼び出せるようにします。
routerを初期化するタイミングでswagger uiの設定をします。
|
|
また、docsをimportする必要があるので、以下のようにmainにdocsをimportしておきます。
|
|
4. swaggerを開く
ここまで出来たらあとはサーバを立ち上げてswagger uiにアクセスするだけです。
|
|
この状態でブラウザで以下のURLにアクセスすると、swagger uiが表示されると思います。
http://localhost:1314/swagger/index.html
Try it outから実際にAPIを叩いてみると、APIがたたけることを確認できます。
echo v4対応
現時点ではecho v4が出たばかりということもあって、echo-swaggerがv4では使えませんでした。
echo-swaggerをforkして、echoのバージョンをv4にあげたものが以下のリポジトリにあるので、これを使えばecho v4の環境でもecho-swaggerを使うことが出来ます。
https://github.com/ken-aio/echo-swagger
まとめ
go docを書くだけでswaggerが出来てしまう超便利なswagをechoで使う方法でした。
APIドキュメントを書くのが面倒な人にはおすすめです。
Author ken-aio
LastMod 2019-02-05