OpenAPI 명세

Noir 스캔 결과에서 OpenAPI 명세(OAS) 2.0 및 3.0 문서를 생성합니다.

스캔 결과를 OpenAPI Specification 문서로 변환합니다. 생성된 스펙은 Swagger UI, Postman, Insomnia 등에 바로 임포트하여 API 문서화, 테스트, 목 서버 생성 등에 활용할 수 있습니다.

Noir는 OAS 2.0(Swagger)과 OAS 3.x를 모두 지원합니다.

사용법

OAS 3.0 (권장)

noir scan . -f oas3

OAS 2.0

noir scan . -f oas2

출력 예제

표준 OpenAPI 구조를 따릅니다. info에 메타데이터가, paths 아래에 각 URL 경로별 HTTP 메서드와 파라미터 정보가 들어갑니다. 이 결과를 Swagger Editor에 붙여넣으면 바로 시각화됩니다.

{
  "openapi": "3.0.3",
  "info": {
    "title": "Generated by Noir",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "http://localhost"
    }
  ],
  "paths": {
    "/": {
      "get": {
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": { "type": "object" }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "schema": { "type": "string" }
          }
        ]
      }
    },
    "/query": {
      "post": {
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": { "type": "object" }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "my_auth",
            "in": "cookie",
            "required": false,
            "schema": { "type": "string" }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": { "type": "string" }
                }
              }
            }
          }
        }
      }
    }
  }
}

헤더, 쿠키, path, query 파라미터는 parameters로 나가고, form과 JSON 바디는 해당 미디어 타입의 requestBody가 됩니다. -f oas2는 Swagger 2.0 형태로 출력하며, 바디 파라미터는 in: formData / in: body 항목이 되고 쿠키는 Cookie 헤더로 실립니다.

문서는 OpenAPI 3.0.3으로 출력됩니다. 스캔 결과에 HTTP QUERY 라우트가 있으면 3.2.0으로 나가는데, 3.0.x에는 query 오퍼레이션이 없기 때문입니다.