社内で使う管理用のちょっとした API を OpenAPI & Go(golang) で作るべく oapi-codegen を(過去の文献を参考に)使おうとして、
configuration error: package name must be specified
に阻まれ、回避方法を探したら リリース情報のページ にちゃんと書いてあった、というだけのメモ書きです。
(ついでにいうと、最初に探し当てていた文献にもちゃんと書いてありました…)
以前のバージョンでの使い方
こんな感じで紹介されている例が多かったと思います。
go get github.com/deepmap/oapi-codegen/cmd/oapi-codegen
oapi-codegen 【スキーマ定義の .yaml ファイル】 -package 【パッケージ名】 -generate 【生成対象:types,client,server,spec など】 -o 【出力先の .gen.go ファイル】
(ほかに-o
オプションではなく>
で出力先を指定する例もありました)
例:
- Go の Open API 3.0 のジェネレータ oapi-codegen を試してみた(Future Tech Blog)
- OpenAPI(APIドキュメント)を用いたGoのAPIサーバー開発(SHIFT Group 技術ブログ)
oapi-codegen
は v1.11.0 から 設定(config)ファイルを読み込んで コードを自動生成しないといけなくなりました。
(ついでにいうと 1 行目のgo get
でoapi-codegen
をインストールする方法も Go 1.16 で非推奨になり 1.17 で廃止されました)
- v1.11.0 をインストールする場合
go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.11.0
v1.11.0 以降の使い方
config.yaml
などの設定ファイルに、
package: petshop
generate:
echo-server: true
client: true
models: true
embedded-spec: true
のような設定を記述してから、
oapi-codegen -config config.yaml 【スキーマ定義 .yaml】 > 【出力先 .gen.go】
とします。
(出力先ファイル名は、設定ファイルにoutput: 【出力先 .gen.go】
で指定しておくことも可能です)
または、(おそらくいずれ非推奨→削除になりそうですが)-output-config
と-old-config-style
を指定し、
oapi-codegen -output-config -old-config-style -package=【パッケージ名】 -generate=【生成対象:types,client,server,spec など】 -alias-types 【スキーマ定義 .yaml】 > 【出力先(設定).yaml】
oapi-codegen -config 【↑で出力した(設定).yaml】 【スキーマ定義 .yaml】 > 【出力先 .gen.go】
とします。
参考
- Many updates, you will need to update your configuration(oapi-codegen v1.11.0 Release Notes)
-
oapi-codegenでchi用APIインターフェースを自動生成(rinoguchi's techlog)
- 最初に
oapi-codegen
の参考文献として見つけてブックマークしていたにも関わらず、問題が解決した後で v.1.11.0 での変更点の記述があるのに気付きました…。
- 最初に