✅ FastAPI에서 APIRouter 경로 설정 완전 정리
1. 📌 기본 개념: prefix와 path의 결합
FastAPI의 APIRouter는 다음 구조로 URL 경로를 설정합니다:
APIRouter(prefix="/기본경로")
그리고 그 아래 함수에 path 문자열을 추가로 붙입니다:
@router.get("/하위경로")
결과적으로 전체 경로는:
/prefix + /path
2. ✅ 빈 문자열("")을 사용하는 경우
mysql_router = APIRouter(prefix="/v1/mysql/meetings")
@mysql_router.post("")
async def create_meeting():
...
이때 최종 경로는:
POST /v1/mysql/meetings
🔍 의미
- prefix만으로도 경로가 완성되기 때문에 path에 아무 것도 안 붙인 것
- 즉, 이 API는 루트 POST 요청을 처리함
3. 📁 하위 경로를 붙이는 경우
예시 1: /create 경로 추가
@mysql_router.post("/create")
async def create_meeting():
...
- 최종 경로: POST /v1/mysql/meetings/create
- 설명: meetings 중에서도 생성을 담당하는 명시적 경로
예시 2: /join 경로 추가
@mysql_router.post("/join")
async def join_meeting():
...
- 최종 경로: POST /v1/mysql/meetings/join
- 설명: 회의 참가를 처리하는 별도 경로
4. 🧠 언제 어떻게 사용할까?
상황 path에 "" 사용 path에 "/기능명" 사용
기능이 단일하고 구체적일 때 | ✅ | ❌ 생략 가능 |
여러 기능을 나눌 때 (create, join 등) | ❌ | ✅ 명시 필요 |
RESTful API 설계 시 | 자주 사용 | 필수로 사용 |
5. ✅ 요약 정리
요소 설명
prefix | 공통 경로 앞부분 (라우터 단위로 설정) |
path="" | prefix 그대로 사용할 때 (루트 경로) |
path="/create" 등 | 세부 기능을 분리해서 명시할 때 사용 |
전체 경로 | prefix + path의 조합으로 생성됨 |
FastAPI의 prefix + path 구조는 RESTful API를 깔끔하게 나누는 데 매우 유용합니다.
처음에는 path=""가 낯설 수 있지만, 공통 경로만으로 충분한 경우에 유용하게 사용되니 상황에 맞게 잘 구분해서 사용해보세요!
'기술블로그-Fastapi편' 카테고리의 다른 글
✅ FastAPI 접속 주소 정리: 0.0.0.0 vs 127.0.0.1 (0) | 2025.05.27 |
---|---|
✅ FastAPI 핵심 용어 정리: path operation function (0) | 2025.05.27 |
✅ FastAPI 함수 리턴 타입 힌트 -> CreateMeetingResponse 완전 정리 (0) | 2025.05.27 |
✅ FastAPI/Pydantic 문법 정리: Annotated와 Field 완전 이해하기 (0) | 2025.05.27 |
✅ 미팅 생성 API 스펙 만들기 – 쉽게 이해하는 실전 예시 (0) | 2025.05.27 |