openapi2aspidaで型情報をきれいに作りたい時のOpenAPI記述方法

2022/03/04に公開

swagger-mergerなどを使用している場合

components:
  schemas:
    Note:
      type: object
      properties:
        id:
          type: integer
        user:
          $ref: './user.yml#User'
        body:
          type: string
...

みたいに書くとopenapi2aspidaしたときにUserが展開されてしまって綺麗にいかない。

export type Note = {
  id: number
  user: {
    id: number
    status: number
    nickname: string
    email: string
    gender: number
    age: number
    created: string
  }
  body: string
}

なので

components:
  schemas:
    Note:
      type: object
      properties:
        id:
          type: integer
        user:
          $ref: '#/components/schemas/User'
        body:
          type: string
...

このように書いてあげるとよい。

export type Note = {
  id: number
  user: User
  body: string
}

うう、スッキリ。

Discussion