読者です 読者をやめる 読者になる 読者になる

GeekFactory

int128.hatenablog.com

Swagger CodeGenでダミーデータを返すスタブを出力する

Swagger codegenで言語にnodejs-serverを指定すると、Node.jsベースのRESTサーバが生成されます。基本的には空のデータを返す実装になるのですが、ある一定の条件を満たす場合は aeiou123456789 といったダミーデータを返す実装を出力してくれるようです。

少し試した限りでは、responses に深さ2以上の参照(参照の参照)を渡している場合は空データになってしまうようです。深さ1の場合はダミーデータになります。変な挙動ですね。

definitions:
  Pet:
    type: object
    required:
      - id
      - name
    properties:
      id:
        type: integer
        format: int64
      name:
        type: string
      tag:
        type: string
  Pets:
    type: array
    items:
      $ref: '#/definitions/Pet'

# 以下の場合は空データが返る
      responses:
        '200':
          description: successful operation
          schema:
            $ref: '#/definitions/Pets'

# 以下の場合はダミーデータが返る
      responses:
        '200':
          description: successful operation
          schema:
            type: array
            items:
              $ref: '#/definitions/Pet'

swagger-codegenリポジトリにある samples/server/petstore/nodejs/controllers/PetService.js はダミーデータを返す実装になっているので、ここの書き方を参考にするとよさそうです。

github.com

ダミーデータなどではなくて、examplesに書いたJSONを返してくれるスタブを生成できるとうれしいのですが、残念ながら未実装のようです。テンプレートをカスタマイズすればできそうな気がします。

github.com