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 키워드 를 사용하여 미리 정의된 여러 유형의 혼합을 포함하는 배열을 정의하는 방법에 대해 논의했습니다 .
마지막으로 임의 유형을 포함할 수 있는 배열을 정의하기 위해 임의 유형 스키마를 사용할 수 있음을 배웠습니다.