Swagger 仕様を複数ファイル出力する goa プラグイン Multiswagger を作った
作りました。
goa とは
Go でマイクロサービスな Web API を作るためのライブラリです。
goa の DSL で design と呼ばれる定義を書いたら、 goagen というジェネレータを使ってサーバやクライアントなど各種のコードを生成することができます。日本語だと @ikawaha さんによる連載記事が非常にわかりやすくてオススメです。
Multiswagger とは
Swagger 仕様を出力するための goagen のプラグインです。 goagen に内蔵されているデフォルトの Swagger ジェネレータと互換性がありますが、Description()
という DSL が JSON のとき、そのキー毎に Swagger 仕様を出力します。
apidsl.Description(`{ "key1": "value1", "key2": "value2" }`)
例えば上記のような design を入力としたとき
swagger.key1.json と swagger.key1.yaml に
description: value1
が、 swagger.key2.json と swagger.key2.yaml に
description: value2
が出力されます。
i18n のために各言語の説明を書いてそれぞれ別のファイルに出力する、という使い方が考えられます。
apidsl.Description(`{ "en": "This is an english description.", "ja": "これは日本語の説明です。" }`)
というか他のユースケースが思いつきませんでした🤔
非常にニッチなコードですがよければ使ってみてください。