4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

小ネタ/Open API 3.0 ジェネレータ oapi-codegen v1.11.0 のコード自動生成の方法

Last updated at Posted at 2022-08-28

社内で使う管理用のちょっとした 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オプションではなく>で出力先を指定する例もありました)

例:

oapi-codegenは v1.11.0 から 設定(config)ファイルを読み込んで コードを自動生成しないといけなくなりました。

(ついでにいうと 1 行目のgo getoapi-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などの設定ファイルに、

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】

とします。

参考

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?