카테고리 없음

OpenAPI 3.0 Specification Document Cheat Sheet

Junuuu 2023. 8. 19. 00:01
반응형

개요

Swagger의 OpenAPI 3.0 Specification Document를 만들때 사용하는 문법들을 기록합니다.

나중에 빠르게 재사용하기 위해서 기록해두는 목적입니다.

 

api.yaml

openapi: 3.0.3
info:
  title: My Product
  description: |-
    My Product description
  termsOfService: http://swagger.io/terms/
  contact:
    email: bababrll@naver.com
  version: 0.0.1
externalDocs:
  description: Find out more about Swagger
  url: http://swagger.io
servers:
  - url: http://localhost:8080
  - url: https://your-product.dev.com
  - url: https://your-product.beta.com
  - url: https://your-product.com
paths:
  /your-path:
    $ref: 'paths/internal/YourPath.yaml'

path를 정의하고 ref로 달아두면 SRP 관점에서 문서를 조금 더 편하게 관리할 수 있을 것 같습니다.

 

 

YourPath.yaml

parameters:
  - name: jwt
    in: header
    descriptions: jwt 토큰
    required: true
    schema:
      type: string
  - name: phone-number
    in: query
    required: true
    description: 휴대전화번호
    schema:
      type: string
    example:
      01011112222

post:
  tags:
    - yourPathMethod
  summary: 어떤 메서드
  operationId: yourPathMethod
  requestBody:
    required: true
    content:
      application/json:
        schema:
          $ref: '../../requests/YourRequestBody.yaml'  

  responses:
    '200':
      description: 성공
      content:
        application/json:
          schema:
            $ref: '../../schemas/YourMethodResponse.yaml'
    '400':
      description: 필수 요청값이 빠져 있을 수 있습니다.
    '500':
      description: 예측하지 못한 예외를 의마합니다. Backend 에 문의 바랍니다.

 

YourRequestBody.yaml

type: object
required:
  - yourRequestArray
properties:
  yourRequestArray:
    type: array
    items:
      type: string
  list:
    type: array
    items:
      $ref: '../schemas/YourDTO.yaml'

 

YourMethodResponse.yaml

type: object
properties:
  yourColumn1:
    type: string
  yourColumn2:
    type: string

 

YourDTO.yaml

type: object
properties:
  col1:
    type: string
    example: '0000000040095'