📘

openapi-generator-cliでNode.js用のサーバーコードを自動生成する

2022/08/20に公開

openapi-generator-cliを使うと、OpenAPIのSpecから、Node.js用のサーバーコードを自動生成できます。

https://github.com/OpenAPITools/openapi-generator-cli

適当なディレクトリを作成し、ディレクトリ内で、以下のコマンドを実行して、初期化と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