API 사양서 작성한다면 swagger v2.0에서 v3.0으로 변경할 때의 포인트

소개



최근 API 스펙을 작성하기 위해 swagger을 사용하기 시작하고 swagger2.0openapi3.0.0 그 때 버전의 차이로 기재 방법에 변경점이 있었으므로, 메모 대신으로서 기재합니다.

v2.0



우선 가장 간단한 형태
swagger: '2.0'
paths:
  /api/regist:
    post:
      consumes:
        - application/x-www-form-urlencoded
      parameters:
        - name: hoge_id
          in: query
          description: クエリパラメータ
          type: integer
          required: true
        - name: hoge_name
          in: formData
          description: 名前
          required: true
          type: string
        - name: age
          in: formData
          description: 年齢
          required: true
          type: string
        - name: comment
          in: formData
          description: コメント
          type: string
          required: true
          maxLength: 1000
    responses:
      200:
        description: ok



v3.0


openapi: 3.0.0
paths:
  /api/regist:
    post:
      parameters:
        - in: query
          name: id
          required: true
          description: クエリパラメータ
          schema:
            $ref: '#/components/schemas/id'
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RequestBody'
      responses:
        200:
          description: ok
components:
  schemas:
    id:
      type: string
      example: '1'
    name:
      description: 名前
      required:
        - name
      type: string
      example: テスト太郎
    age:
      description: 年齢
      required:
        - age
      type: string
      example: '18'
    comment:
      description: コメント
      required:
        - comment
      type: string
      maxLength: 1000
      example: コメントコメント
    RequestBody:
      type: object
      required:
        - name
        - age
        - comment
      properties:
        name:
          $ref: '#/components/schemas/name'
        age:
          $ref: '#/components/schemas/age'
        comment:
          $ref: '#/components/schemas/comment'



v3.0과의 변경점


  • bodyformDatarequestBody
  • schema를 정의하는 방법
  • v2.0
    definitions:
      - comment:
    v3.0
    components:
      schemas:
        - comment:
    
  • type는 schema로 정의
  • required: true 대신 대상 지정
  • 외형 : v3.0에서는 description의 내용이 models 안에 기재

  • 사이고에게



    개인적으로 v2.0이 description이 보기 쉽기 때문에 v3.0은 바람직하지 않네요...
    손님에게 보여주는 것을 생각하면 description이 보기 쉬운 위치에 있는 것도 중요하고.

    좋은 웹페이지 즐겨찾기