OpenAPI 2.0 enum과 추가 제약의 일관성 점검

enum과 함께 쓰는 제약이 의도한 허용 값과 일치하는지 확인하세요.

설명

OpenAPI 2.0에서는 enum과 minimum, maxLength 같은 제약을 함께 사용할 수 있으며 모든 제약이 적용됩니다. 중복 제약은 유지보수를 복잡하게 하고, 충돌하는 제약은 enum에 나열한 값도 허용하지 않을 수 있습니다.

잠재적 영향

  • enum을 수정하면서 다른 제약을 놓치면 의도한 입력이 거부될 수 있습니다.
  • 같은 허용 범위를 여러 곳에 표현하면 문서와 구현을 일관되게 관리하기 어려워집니다.

해결 방법

enum과 다른 제약을 함께 검토하세요. 허용되는 값이 달라지지 않는 중복 제약만 제거하고, 필요한 제약은 유지하세요. 변경한 스키마로 의도한 값의 허용 여부를 확인하고 서버의 입력 검증도 일치시키세요.

예시

다음 스키마에서는 모든 id 값이 minimum을 만족하고 모든 name 값이 maxLength 이내입니다. definitions 부분만 발췌했습니다.

변경 전

json
{
  "definitions": {
    "Category": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "minimum": 1,
          "enum": [2, 3, 4, 5, 6]
        },
        "name": {
          "type": "string",
          "maxLength": 10,
          "enum": ["Foo", "Bar"]
        }
      }
    }
  }
}

변경 후

json
{
  "definitions": {
    "Category": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "enum": [2, 3, 4, 5, 6]
        },
        "name": {
          "type": "string",
          "enum": ["Foo", "Bar"]
        }
      }
    }
  }
}

변경 후에는 이 enum 값들에 중복되는 minimum과 maxLength를 제거했습니다. 두 스키마의 허용 값은 같습니다.

참조