📘
openapi-generator-cliでNode.js用のサーバーコードを自動生成する
openapi-generator-cliを使うと、OpenAPIのSpecから、Node.js用のサーバーコードを自動生成できます。
適当なディレクトリを作成し、ディレクトリ内で、以下のコマンドを実行して、初期化とopenapi-generator-cliのインストールを行います。
$ npm init -y
$ npm i -D @openapitools/openapi-generator-cli
以下のような内容のpackage.jsonが生成されます。
{
"name": "apitest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@openapitools/openapi-generator-cli": "^2.5.1"
}
}
package.jsonを編集して、scripts内に、ogというエイリアスを追加します。
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"og": "openapi-generator-cli"
},
以下のコマンドを実行して、生成可能なコード一覧を取得します。
$ npm run og list
(略)
SERVER generators:
- nodejs-express-server (beta)
サーバーの出力オプションにnodejs-express-serverがあるので、今回はこれを使ってみます。
(beta版なのが気になりますが…)
OpenAPIのSpecを用意します。今回はサンプルデータを使用します。公式サンプルのpetstore.yamlをダウンロードして、package.jsonと同じ階層に置きます。
openapitools.jsonを開き、以下のように修正します(無ければ作成してください)。
{
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
"spaces": 2,
"generator-cli": {
"version": "6.0.1",
"generators": {
"v3.0": {
"generatorName": "nodejs-express-server",
"output": "output",
"glob": "petstore.yaml"
}
}
}
}
以下のコマンドを実行して、コードを生成します。
$ npm run og generate
成功すると、outputディレクトリが生成されて、中にNode.js用のサーバーコードが生成されます。
以下のコマンドを実行すると、サーバーが起動します。
$ cd output
$ npm run start
サーバーが起動しましたが、ロジックの実装が無いので何もできません。ロジックを実装するには、servicesディレクトリ以下のスクリプトを編集してください。
openapi-generator-cliは、手早くモックを作りたい時などに便利そうです。
Discussion