enum과 추가 스키마 제약 점검

열거값과 다른 스키마 제약을 함께 검토해 실제 허용값을 명확히 하세요.

설명

enum은 허용 가능한 값을 명시적으로 제한하는 속성입니다. minLength나 maximum 같은 다른 제약과 함께 사용할 수 있으며, 값은 적용되는 제약을 모두 만족해야 합니다. 열거된 값이 다른 제약을 위반하면 실제로는 허용되지 않습니다.

잠재적 영향

API 사용자가 enum 목록만 보고 요청했다가 검증에 실패하거나, 허용값이 하나도 남지 않는 스키마를 만들 수 있습니다.

해결 방법

열거값이 의도한 타입과 모든 추가 제약을 만족하는지 확인하세요. 필요한 제약은 유지하고 중복되거나 잘못된 제약만 정리하세요. enum과 다른 키워드를 함께 썼다는 이유만으로 유효한 제약을 제거하지 마세요.

예시

OpenAPI 3.0 스키마 발췌입니다. 예시의 네 문자열은 모두 길이가 4 이상이므로 minLength: 4와 충돌하지 않습니다.

변경 전

json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "Cat": {
        "type": "object",
        "properties": {
          "huntingSkill": {
            "type": "string",
            "enum": [
              "clueless",
              "lazy",
              "adventurous",
              "aggressive"
            ],
            "minLength": 4
          }
        }
      }
    }
  }
}

변경 후

json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "Cat": {
        "type": "object",
        "properties": {
          "huntingSkill": {
            "type": "string",
            "enum": [
              "clueless",
              "lazy",
              "adventurous",
              "aggressive"
            ]
          }
        }
      }
    }
  }
}

변경 후는 이미 모든 열거값이 만족하는 길이 제약을 생략한 것입니다. 두 스키마의 허용 문자열 집합은 같으며, 변경 전 구성이 잘못된 것은 아닙니다.

참조