설명
숫자 스키마에서 minimum은 허용 가능한 최솟값이고 maximum은 최댓값입니다. minimum이 maximum보다 크면 어떤 숫자도 조건을 만족할 수 없습니다. 문자열의 minLength·maxLength와 배열의 minItems·maxItems도 같은 원칙으로 검토해야 합니다.
잠재적 영향
- 정상 데이터도 해당 범위 검증에 실패할 수 있습니다.
- 클라이언트와 서버가 잘못된 범위 규칙을 구현해 연동 문제가 발생할 수 있습니다.
해결 방법
각 최솟값이 대응하는 최댓값 이하인지 확인하고 실제 업무 규칙에 맞는 범위로 수정하세요. 숫자에서 두 값이 같다면 경계를 제외하는 exclusiveMinimum과 exclusiveMaximum도 함께 확인하세요.
예시
OpenAPI 3.0 숫자 스키마 발췌입니다. info와 paths는 생략했습니다. 변경 전에는 code에 3 이상이면서 1 이하인 정수를 요구합니다.
변경 전
json
{
"openapi": "3.0.0",
"components": {
"schemas": {
"GeneralError": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": 3,
"maximum": 1
}
}
}
}
}
}
변경 후
json
{
"openapi": "3.0.0",
"components": {
"schemas": {
"GeneralError": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": 0,
"maximum": 50
}
}
}
}
}
}
변경 후에는 0부터 50까지의 정수를 허용합니다. 이 범위는 예시이므로 실제 코드 값의 계약에 맞게 정하세요.