Open3
OpenAPI からGo のコードを生成する系全般

参考記事
- openapi-generator
- go-swagger
- 対応しているバージョンが OpenAPI v2.0 までであるため、OpenAPI v3.0 に準拠したOpenAPI定義ファイルからはコードの生成ができませんでした
- よく使われるのは
- OpenAPITools/openapi-generator
- deepmap/oapi-codegen
- Strict server generation の機能(gRPC ライクな interface)
- 生成される interface や型が個人的にあまり好みではなく、モヤモヤしながら使っていました
- 推し
- ogen-dev/ogen
- ogen の良いところ
- gRPC ライクな interface
- null や optional に対してちゃんと型を付けようと努力している
- OpenTelemetry の標準サポート
- ogen の良いところ
- ogen-dev/ogen
- OpenAPI Generator
- oapi-codegen
- 結論
- OpenAPIを使ってAPIの開発を進めていくにはoapi-codegenの方が向いていると感じました。
- OpenAPI Generator は生成コードをカスタマイズしにくい
- OpenAPIを使ってAPIの開発を進めていくにはoapi-codegenの方が向いていると感じました。
- oapi-codegen
- client や type のみの生成も可能
- ogen
- 標準の OpenAPI v3 で完結
- Optional や Nullable に対応
- OpenTelemetry に対応
- 所感
- 楽に厳密に実装できそうなのは ogen
- ミドルウェアの実装を楽にしたいなら oapi-codegen
- ライブラリ( echo や gin ) に慣れ親しんでいる方は oapi-codegen
-
https://github.com/getkin/kin-openapi
- レスポンスがスキーマと一致していることを確認するためのテスト
その他
Google検索
- golang openapi generator で検索すると上位(2024/09/15)

選択肢
OpenAPI Generator
GitHub: https://github.com/OpenAPITools/openapi-generator
HP: https://openapi-generator.tech/docs/generators/go/
検索上位記事: https://qiita.com/amuyikam/items/e8a45daae59c68be0fc8
oapi-codegen
GitHub: https://github.com/oapi-codegen/oapi-codegen
検索上位記事:
- https://qiita.com/SBS_Takumi/items/0cabf4b7697b6a6f46fd
- https://future-architect.github.io/articles/20200701/
ogen
GitHub: https://github.com/ogen-go/ogen
検索上位記事:
- https://zenn.dev/minguu42/articles/20230721-ogen-first-step
- https://developer.so-tech.co.jp/entry/2023/09/04/103426
OpenAPI v3 未対応
2024/9/15 時点で OpenAPI v3 に対応できていない。v3 をサポートするための issue はあるが、対応される気配がない。
Swagger 2.0
GitHub: https://github.com/go-swagger/go-swagger
issue:
HP: https://goswagger.io/go-swagger/
検索上位記事: https://note.com/rescuenow_hr/n/nc0f7fbaeaac8
swag
GitHub: https://github.com/swaggo/swag
issue: https://github.com/swaggo/swag/issues/386
検索上位記事:
- https://qiita.com/sgash708/items/6c61faea73acc3dea8b4
- https://zenn.dev/toraco/articles/858a9b2fe72508
- https://engineering.nifty.co.jp/blog/10123
その他
-
https://github.com/parvez3019/go-swagger3
- star数: 100程度
-
https://github.com/davidebianchi/gswagger
- star数: 30程度
validation

比較