#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?;#워크플로우
- API 로직을 위한 Schematic을 정의합니다.
- Axon을 URI와 HTTP 메서드에 바인딩합니다.
- 특정 그룹에 미들웨어 레이어(CORS, Auth)를 추가합니다.
Path<T>추출기를 사용하여 경로 파라미터를 추출합니다.
#주요 타입
| 타입 | 설명 |
|---|---|
| HttpIngress | HTTP 서버 및 라우팅 테이블 구성을 위한 기본 빌더 |
| RouteGroup | 공유 접두사와 레이어를 가진 라우트 정리용 컨테이너 |
| JsonBody<T> | 타입 안전 JSON 추출 및 직렬화를 위한 래퍼 |
| Path<T> | 요청 URI에서 세그먼트를 캡처하는 추출기 |
| Multipart | 파일 업로드를 위한 Multipart form-data 추출기 (기능 게이트: multer) |