OpenAPI 검증기

OpenAPI 또는 Swagger 문서를 JSON이나 YAML로 붙여넣으면 이 검증기가 핵심 구조를 점검합니다. 문서가 파싱되는지, openapi 또는 swagger 버전 필드가 있는지, 제목과 버전을 담은 info 객체가 있는지, paths 객체가 있는지 확인한 다음, 슬래시로 시작하지 않는 path와 알 수 없는 HTTP 메서드를 표시합니다. 이것은 전체 JSON Schema 검증기가 아니라 빠른 구조 점검입니다.

검증은 어떻게 진행되나

  1. 1

    문서를 붙여넣기

    OpenAPI 2(Swagger) 또는 OpenAPI 3용 JSON 또는 YAML.

  2. 2

    문서 파싱

    검증기는 문서를 JSON으로 파싱하고, 실패하면 YAML 파싱으로 되돌아갑니다.

  3. 3

    필수 필드 확인

    `openapi` 또는 `swagger` 버전 필드, `title`과 `version`을 담은 `info` 객체, 그리고 `paths` 객체가 있는지 확인합니다.

  4. 4

    path 스캔

    각 path에 앞 슬래시가 있는지 확인하고, 각 operation 키를 알려진 HTTP 메서드와 대조합니다.

  5. 5

    보고서 읽기

    오류는 유효성을 막고, 경고는 앞 슬래시가 없는 path와 알 수 없는 메서드를 짚어 줍니다.

이 검증기가 점검하는 것

점검 항목 실패 시 결과
문서가 JSON 또는 YAML로 파싱됨 오류
openapi 또는 swagger 필드 존재 오류
info 객체 존재 오류
info.title 존재 오류
info.version 존재 오류
paths 객체 존재 오류
각 path가 /로 시작 경고
operation 키가 알려진 HTTP 메서드 경고

모든 오류를 통과한 문서는 구조적으로 유효하다고 보고됩니다. 경고는 유효성을 막지 않으며, 고칠 가치가 있는 부분을 짚어 줍니다.

이 검증기가 점검하지 않는 것

이것은 구조 점검이지, 전체 사양 검증기가 아닙니다. 이 검증기는 다음을 하지 않습니다:

  • 사용 중인 버전의 공식 JSON Schema에 대해 모든 노드를 검증하지 않습니다;
  • $ref 참조를 해석하거나 그것이 가리키는 컴포넌트가 존재하는지 확인하지 않습니다;
  • path 매개변수가 일관되게 선언되고 사용되는지 확인하지 않습니다;
  • operationId 값이 있는지 또는 고유한지 확인하지 않습니다;
  • 오류의 줄 번호를 보고하지 않습니다.

그런 수준이 필요하면 redocly lint, swagger-cli validate, spectral lint 같은 전용 CLI 검증기를 실행하세요. 이 도구는 사양을 커밋하거나 공유하기 전에 빠르게 점검하는 데 사용하세요.

실제로 쓰이는 OpenAPI 버전

버전 참고
Swagger 2.0 여전히 널리 배포됨; swagger: "2.0" 사용
OpenAPI 3.0.x 가장 일반적인 3.x 계열
OpenAPI 3.1.0 JSON Schema 2020-12과 정렬됨

이 검증기는 openapi 필드(3.x)나 swagger 필드(2.0) 중 하나를 받아들이므로, 이 모두가 버전 확인을 통과합니다.

통과하는 최소 문서

openapi: 3.0.3
info:
  title: Example API
  version: 1.0.0
paths:
  /users:
    get:
      summary: List users

모든 필수 필드가 존재하고, 하나뿐인 path가 슬래시로 시작하며, get이 알려진 메서드이므로 이 문서는 구조적으로 유효하다고 보고됩니다.

자주 묻는 질문

Swagger는 이 사양의 원래 이름으로, 2015년 리눅스 재단에 기증되었고 버전 3.0부터 “OpenAPI”로 이름이 바뀌었습니다. 현재 “Swagger”는 도구(Swagger UI, Swagger Editor)를 가리킵니다. 사양 자체는 OpenAPI입니다. 이 검증기는 swagger(2.0)와 openapi(3.x) 버전 필드를 모두 받아들입니다.

아니요. 핵심 구조를 점검합니다: 문서가 파싱되는지, 버전 필드와 제목·버전을 담은 info 객체, 그리고 paths 객체가 있는지 확인하고, 앞 슬래시가 없는 path와 알 수 없는 메서드를 경고합니다. 공식 JSON Schema에 대해 모든 노드를 검증하지는 않습니다. 그 용도로는 redocly lintspectral lint를 사용하세요.

아니요. $ref 참조를 따라가거나 그것이 가리키는 컴포넌트가 존재하는지 확인하지 않습니다. 파일 간 참조는 redocly bundle이나 swagger-cli bundle 같은 도구로 문서를 먼저 번들링한 다음 전체 검증기를 실행하세요.

아니요. 붙여넣은 문서만 검사하며, 실행 중인 코드는 검사하지 않습니다. 여러분의 API가 사양이 설명한 대로 실제로 반환하는지는 알 수 없습니다. Dredd나 Schemathesis 같은 계약 테스트 도구가 그 일을 합니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다