Skip to content

feat: 메타 질의 HTTP REST API (NATS subject gateway) #88

Description

@e7217

배경

#84로 도입된 트리 질의 API는 NATS request/reply 표면에 한정된다. 외부 UI·운영 도구·브라우저 기반 대시보드는 HTTP를 기대하므로, NATS subject들을 read-only HTTP gateway로 노출한다.

본 이슈는 의도적으로 read-only PoC로 범위를 좁힌다. write 표면(자산 생성·관계 등록 등)은 인증·CORS·CSRF·OpenAPI 등 결정 폭이 커서 별도 이슈로 분리한다.

범위

  1. HTTP 엔드포인트 (read-only)

    • GET /api/v1/assets — 자산 목록 (페이지네이션)
    • GET /api/v1/assets/{id} — 자산 상세
    • GET /api/v1/assets/{id}/ancestors?relation_types=&max_depth=
    • GET /api/v1/assets/{id}/descendants?...
    • GET /api/v1/assets/{id}/subtree?...
    • GET /api/v1/assets/{id}/connected?relation_type=
    • GET /api/v1/relations — 관계 목록 (필터링)
    • GET /api/v1/health — 헬스 체크
    • GET /api/v1/version — 버전 정보
  2. 라이브러리·서버 구성

    • 라이브러리 선택 (net/http vs chi vs gin) → 디자인 섹션에서 결정
    • 기존 EDG Core 프로세스와 같은 binary에 임베드 vs 별도 sidecar — Plan에서 결정
  3. 기본 인증·CORS

    • 베어러 토큰 옵션 (환경 변수로 설정)
    • CORS는 기본 비활성, 운영자가 명시적 허용
  4. 응답 스키마

    • NATS subject 응답과 동일한 JSON 구조 유지 (1:1 매핑)

범위 외 (후속 이슈)

  • write API (POST/PUT/DELETE 엔드포인트)
  • 데이터 평면 HTTP (validated data를 HTTP로 노출)
  • OAuth/OIDC 통합
  • OpenAPI 자동 생성·문서 호스팅
  • 레이트 리미팅·캐싱 헤더 고도화

의존성

핵심 설계 결정 (Plan에서 상세)

  • HTTP 라이브러리 선택 (현재 의존성 0 → 표준 라이브러리 우선 검토)
  • 동일 프로세스 임베드 vs sidecar 분리
  • 인증 모델 (베어러 토큰 + 옵션 mTLS vs 더 확장적인 모델)
  • 응답 페이지네이션 규약

계획 문서

상세 계획은 plan 파일로 별도 작성 예정.

Metadata

Metadata

Assignees

No one assigned

    Labels

    designArchitecture and design discussionsenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions