#HTTP 인그레스 & 라우팅
버전: 0.33.0 최종 업데이트: 2026-03-15 적용 대상: ranvier-http 카테고리: 심층 분석
타입 안전하고 명시적인 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) |