FastAPI APIRouter

gunny·2024년 4월 4일
0

Python

목록 보기
21/29

FastAPI - APIRouter

  • FastAPI 애플리케이션에서 API 엔드포인트를 구성하는데 사용되는 클래스
  • 해당 클래스를 사용해 코드를 논리적으로 그룹화하고 모델화해서 애플리케이션을 쉽게 유지 보수 할 수 있다.
  • 여러 개의 APIRouter 인스턴스를 생성해서 라우트를 그룹화하고 이러한 그룹을 FastAPI 애플리케이션에 포함시킨다.

기능

(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'를 사용해서 논리적으로 그룹화한다.

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글