설명
고정된 필드로 구성된 객체에 properties가 없으면 필드 이름과 타입을 문서에서 알기 어렵습니다. properties만으로 다른 필드를 금지하거나 해당 필드를 필수로 지정하는 것은 아닙니다.
잠재적 영향
클라이언트와 서버가 다른 객체 구조를 가정하거나 원하지 않는 필드가 검증을 통과할 수 있습니다.
해결 방법
예상하는 필드를 properties에 정의하고 필수 필드는 required에 추가하십시오. 다른 필드를 금지해야 하는 경우에만 additionalProperties: false를 사용하십시오. 동적인 키를 받는 맵은 additionalProperties의 스키마로 값의 형식을 정의할 수 있습니다.
예시
예시는 필수 petType을 포함한 허용 필드를 정의하고 나머지 필드를 금지합니다.
변경 전
json
{
"components": {
"schemas": {
"GeneralError": {
"type": "object",
"required": [
"petType"
]
}
}
}
}
변경 후
json
{
"components": {
"schemas": {
"GeneralError": {
"type": "object",
"additionalProperties": false,
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"petType": {
"type": "string"
}
},
"required": [
"petType"
]
}
}
}
}