기능
(1) 라우트 그룹화 : APIRouter를 사용해 라우트를 그룹화해서 유사한 엔드포인트를 함께 유지하고 관리할 수 있다.
(2) 모듈화 : APIRouter를 사용해 각 라우트 집합을 별도의 모듈로 분리해 개발을 더욱 구조화할 수 있다.
(3) 중첩 라우트 : APIRouter 인스턴스는 중첩될 수 있어 하위 라우트 집합을 정의해 복잡성을 관리할 수 있다.
(4) 코드 재사용성 : 여러 곳에서 동일한 라우트 집합을 사용해야 하는 경우 'APIRouter'를 사용해 코드의 재사용성을 높일 수 있다.
즉, 코드를 조직화하고 유지 관리하기 쉽고, 높은 수준의 모듈화와 재사용성을 위하여 사용한다.
사용하는 방법
예를 들어 간단한 사용자 관리 API를 만든다고 가정하고,
이 애플리케이션에서 사용자를 생성하고 조회하는 엔드포인트를 구성할 것이다.
'main.py' 에서 FastAPI 애플리케이션을 생성하고,
'APIRouter'를 사용해 라우터를 구성한다.
# main.py
from fastapi import FastAPI
from routers import users
app = FastAPI()
#사용자 라우터 포함
app.include_router(users.router, prefix='/users', tags=['users'])
다음으로 'routers/users.py'에서 'APIRouter'를 사용해 사용자 관련 엔드포인트를 정의한다.
# routers/users.py
from fastapi import APIRouter
# 사용자 생성 엔드포인트
@router.post('/')
async def create_user(user:dict):
# 사용자 생성 로직 처리
return {"messages": "User created successfully", "user":user}
# 사용자 조회 엔드포인트
@router.get("/{user_id}")
async def get_user(user_id:int):
# 여기서 사용자 로직 처리
return {"message" "User found", "user_id" : user_id}
각 엔드포인트에 해당하는 함수를 정의 했고, 'APIRouter'의 'prefix' 매개변수를 사용해 '/users' 접두사를 설정해 이 라우터에 정의된 엔드포인트는 '/users'로 시작한다.
이러한 설정으로 애플리케이션은 다음과 같은 구조를 가진다
- /users (prefix)
- POST /users/ (create_user)
- GET /users/{user_id} {get_user}
FastAPi 애플리케이션에 사용자 관련 엔드포인트를 추가하고
'APIRouter'를 사용해서 논리적으로 그룹화한다.