#HTTP 인그레스 & 라우팅

버전: 0.33.0 최종 업데이트: 2026-03-15 적용 대상: ranvier-http 카테고리: Deep Dives


타입 안전하고 명시적인 HTTP 경계를 Router DSL로 구축합니다.

#Router DSL

  • 그룹화: 관련 라우트를 공유 접두사(예: /api/v1) 아래에 묶습니다.
  • 매크로: ranvier_router!를 사용하여 적은 보일러플레이트로 복잡한 라우팅 테이블을 정의합니다.
  • 합성: 중첩된 API 구조를 반영하도록 그룹을 중첩합니다.

#타입 안전 라우팅

  • 경로 파라미터: URI에서 변수를 추출(예: /user/:id)하여 타입으로 변환합니다.
  • 메서드 가드: 노드를 GET, POST, PUT, DELETE 등으로 제한합니다.
  • 명시적 흐름: 숨겨진 미들웨어 마법 없이 변환은 표준 Axon 단계입니다.

#본문 처리

기능 설명
JsonBody<T> 타입 검증을 포함한 네이티브 JSON 요청/응답
Streaming 모든 것을 메모리에 로드하지 않고 대용량 페이로드 처리
SSE text/event-stream을 위한 내장 EventSource 스트림 브리징
Multipart 크기 제한이 있는 multipart/form-data 파일 업로드 파싱
Limits 라우트별 또는 전역적으로 본문 크기 제한 설정

#빠른 시작

Ranvier::http()
  .bind("0.0.0.0:3000")
  .route("/", hello_axon)
  .route_group("/api/v1", |v1| {
      v1.route("/users", user_axon)
  })
  .run().await?;

#워크플로우

  1. API 로직을 위한 Schematic을 정의합니다.
  2. Axon을 URI와 HTTP 메서드에 바인딩합니다.
  3. 특정 그룹에 미들웨어 레이어(CORS, Auth)를 추가합니다.
  4. Path<T> 추출기를 사용하여 경로 파라미터를 추출합니다.

#주요 타입

타입 설명
HttpIngress HTTP 서버 및 라우팅 테이블 구성을 위한 기본 빌더
RouteGroup 공유 접두사와 레이어를 가진 라우트 정리용 컨테이너
JsonBody<T> 타입 안전 JSON 추출 및 직렬화를 위한 래퍼
Path<T> 요청 URI에서 세그먼트를 캡처하는 추출기
Multipart 파일 업로드를 위한 Multipart form-data 추출기 (기능 게이트: multer)