1. 개요

이전에 Swagger 사양으로 알려졌던 OpenAPI 사양은 기계가 읽을 수 있는 표준화된 방식으로 API를 설명하는 데 도움이 됩니다 .

 이 사용방법(예제)에서는 OpenAPI 사양을 사용하여 다양한 유형의 배열을 정의하는 방법을 배웁니다 . 기사 전체에서 OpenAPI v3의 기능을 사용합니다.

2. 다양한 유형의 배열 정의

먼저 기사 전체에서 사용할 예제를 정의해 보겠습니다. 개와 사자를 나타내는 다음 두 개체를 포함하는 배열을 정의한다고 가정합니다.

#dog
type: object
properties:
  barks:
    type: boolean
  likesSticks:
    type: boolean
#lion
type: object
properties:
  roars:
    type: boolean
  likesMeat:
    type: boolean

이러한 개체를 모두 포함할 수 있는 배열을 정의하는 세 가지 방법은 키워드 oneOf , anyOf 및 임의 유형 스키마입니다.

2.1. oneOf 키워드

oneOf 키워드는 배열이 미리 정의된 유형 집합 중 정확히 한 유형을 포함할 수 있음을 지정 합니다 .

type: array
items:
  oneOf:
    - $ref: '#/components/schemas/Dog'
    - $ref: '#/components/schemas/Lion'

다음 배열은 위의 정의에 대한 유효한 예입니다.

{
  "dogs": [
    {
      "barks": true,
      "likesSticks": true
    },
    {
      "barks": false,
      "likesSticks": true
    }
  ]
}

반면에 개와 사자의 혼합은 허용되지 않습니다.

{
  "dogsAndLions": [
    {
      "barks": true,
      "likesSticks": true
    },
    {
      "barks": false,
      "likesSticks": true
    },
    {
      "roars": true,
      "likesMeat": true
    }
  ]
}

2.2. anyOf 키워드

anyOf 키워드는 배열이 미리 정의된 유형의 모든 조합을 포함할 수 있음을 지정합니다 . 이는 개만 또는 사자만 또는 개와 사자 모두 유효한 배열을 형성할 수 있음을 의미합니다.

type: array
items:
  anyOf:
    - $ref: '#/components/schemas/Dog'
    - $ref: '#/components/schemas/Lion'

아래 예는 모두 유효한 세 개의 배열을 보여줍니다.

{
  "onlyDogs": [
    {
      "barks": true,
      "likesSticks": true
    },
    {
      "barks": false,
      "likesSticks": true
    }
  ],
  "onlyLions": [
    {
      "roars": true,
      "likesMeat": true
    },
    {
      "roars": true,
      "likesMeat": true
    }
  ],
  "dogsAndLions": [
    {
      "barks": true,
      "likesSticks": true
    },
    {
      "barks": false,
      "likesSticks": true
    },
    {
      "roars": true,
      "likesMeat": true
    }
  ]
}

2.3. 임의 유형 스키마

임의 유형 스키마를 사용하면 OpenAPI 사양에서 지원하는 모든 유형의 혼합을 포함하는 배열을 정의할 수 있습니다 . 또한 중괄호 ' {} '로 구성된 편리한 속기 구문이 함께 제공됩니다.

type: array
items: {}

위의 정의에 대한 명시적 구문을 살펴보겠습니다.

type: array
items:
  anyOf:
    - type: string
    - type: number
    - type: integer
    - type: boolean
    - type: array
      items: {}
    - type: object

이제 문자열, 숫자, 정수, 부울, 배열 및 임의 개체를 포함하는 예제 배열을 살펴보겠습니다.

{
  "arbitraryStuff": [
    "Hello world",
    42.1,
    42,
    true,
    [{ "name": "Randy Random" }],
    { "name": "Robbi Random" }
  ]
}

3. 결론

이 기사에서는 OpenAPI 사양을 사용하여 다양한 유형의 배열을 정의하는 방법을 배웠습니다.

먼저 미리 정의된 유형 집합 중 한 유형을 포함하는 배열에 대해 oneOf 키워드를 사용하는 방법을 살펴보았습니다 . 그런 다음 anyOf 키워드 를 사용하여 미리 정의된 여러 유형의 혼합을 포함하는 배열을 정의하는 방법에 대해 논의했습니다 .

마지막으로 임의 유형을 포함할 수 있는 배열을 정의하기 위해 임의 유형 스키마를 사용할 수 있음을 배웠습니다.

res – REST (eBook) (cat=REST)