Go OpenAPI code generation
SwaggerまたはOpenAPIで記述されたスキーマ定義からコード自動生成する
go-swagger
https://github.com/go-swagger/go-swagger
Go専用
web application frameworkとしても使える
WAFとして go-swagger を選択してみた
go-swagger でリクエスト/レスポンスのオブジェクト型を 生成してくれるためロジックに集中できる
リクエスト/レスポンスの型だけでなく、リクエストを受ける/レスポンスを返す実装も合わせて生成されます。そのため、実装者は生成されたコードから リクエストパラメータ struct を受け取る → レスポンス struct を生成 までを実装すればよいです
https://goswagger.io/generate/requirements.html
生成したコードが依存するpackages
ohbarye.icon dep推奨してるようだが、記述が古い?
oapi-codegen
https://github.com/deepmap/oapi-codegen
Go専用
v3にのみ対応
Go の Open API 3.0 のジェネレータ oapi-codegen を試してみた
package名はデフォルトではopenapi3だが-package指定できる
デフォルトで1ファイルにすべてのコード生成されるが、-generateでserver, client, types 等を個別に生成することもできる
tagを指定/除外して依存関係あるものだけを取り出すことができる
Swagger Codegen
https://github.com/swagger-api/swagger-codegen
v2, v3に対応
Docker imageあり
OpenAPI Generator
https://github.com/OpenAPITools/openapi-generator
v2, v3に対応
Docker imageあり
2019 WAFとして go-swagger を選択してみた
openapi-generator での生成コードは現状はまだ、運用に耐えるレベルではない考えます。
特に、Handlerとリクエスト/レスポンスの型定義がマッチされたコードが生成されない点が辛いです。
参考
go-swaggerを用いたWebアプリケーション開発Tips19選
平静を保ち、コードを生成せよ 〜 OpenAPI Generator誕生の背景と軌跡 〜 / gunmaweb34
Swagger CodegenとOpenAPI Generatorの違い