0
0

環境

OS:Ubuntu22.04
Go:v1.20.3
oapi-codegen: v2.2.0

やったこと

タイトルにもあるとおり、oapi-codegenを使用してGoの自動生成の実行を行いました。

基本的にはREADMEに従っただけですが、手順を書いておきます。

oapi-codegenインストール

go install github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen@latest

バージョン確認のコマンドでインストールができているか確認しましょう。

oapi-codegen -version
> v2.2.0

生成したコードを入れるフォルダを作成

自動生成したコードを直接編集すると、再び自動生成を行った時に上書きする恐れや、上書きされるのを避けてyamlファイルの変更を手動で反映させる必要などがでてくることが考えられます。
そこで、自分は自動生成したファイルを入れておくgeneratedフォルダを作成することにしました。

mkdir generated

Configファイルを作成

config.yaml
package: api
output: ./generated/{filename}.gen.go
generate:
    echo-server: true
    models: true
output-options:
    skip-prune: true

ほぼREADMEを真似しただけです。

ただ、自分が使用する自動生成元のファイルでは、$refを使って別のファイルを参照しています。このままoapi-codegenを実行するとエラーがおきます。

そこで、自動的にOpenAPIドキュメントを結合してくれるRedocly CLIを使用しました。

OpenAPIドキュメントを結合

下記コマンドで結合できます。
子ファイルを勝手に読み込んでくれるのでラクでした。

npx @redocly/cli bundle {親ファイル名} -o {出力ファイル名}

Goコード出力

oapi-codegen -config config.yaml {上記で出力したファイル名}

これでOpenAPIドキュメントからGoのコード生成ができました。

最後に

コードの自動生成は初めてさわりましたが、とても便利だと思いました。
コード自動生成ツールを上手く使うことで、設計に時間をより多くかけることができますね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0