enum 값과 스키마 타입의 일치 점검

허용하려는 enum 값이 스키마의 타입과 다른 제약도 만족하는지 확인하세요.

설명

enum은 허용되는 값 목록을 제한합니다. 실제로 허용할 값은 type 등 다른 제약도 함께 만족해야 합니다. 숫자 타입에 문자열 값만 나열하면 두 조건을 모두 만족하는 값이 없습니다. 일부 값만 타입에 맞지 않으면 그 값들은 허용되지 않습니다.

잠재적 영향

  • 사용자가 목록에 나온 값을 보내도 타입 검증에 실패할 수 있습니다.
  • 문서나 생성된 클라이언트가 실제 허용값을 잘못 표현할 수 있습니다.

해결 방법

실제 API의 자료형과 허용값을 확인하고 enum과 type을 일치시키세요. 문자열 숫자와 실제 숫자를 구분하고, 다른 제약도 만족하는 값이 남는지 확인하세요.

예시

OpenAPI 3.0 응답 스키마 발췌이며 info는 생략했습니다. 변경 전은 숫자 타입에 문자열 "black"만 허용하므로 응답 값이 두 조건을 모두 만족할 수 없습니다.

변경 전

json
{
  "openapi": "3.0.0",
  "paths": {
    "/": {
      "get": {
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/html": {
                "schema": {
                  "type": "number",
                  "enum": [
                    "black"
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
}

변경 후

json
{
  "openapi": "3.0.0",
  "paths": {
    "/": {
      "get": {
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/html": {
                "schema": {
                  "type": "number",
                  "enum": [
                    1,
                    2,
                    3
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
}

변경 후에는 숫자 1, 2, 3을 허용합니다. 상태 코드, 미디어 타입과 값 목록은 실제 응답 계약에 맞게 선택하세요.

참조