본문 바로가기
✨ python/FastAPI

FastApi로 라우터(Router) = 컨트롤러(Controller) 만들기

by 환풍 2025. 12. 5.
728x90
반응형

 

https://bright-landscape.tistory.com/453

 

FastAPI로 처음 웹에 데이터 띄워보기

1. CMD로 파이썬 버전 확인 python --verison 에서 버전이 안나오면, 제대로 설치된게 아니다.제어판가서 파이썬 삭제하고, 다시 설치할 때,"Add Python to PATH" 이거 체크하고 설치하자. 2. venv 가상환경 생

bright-landscape.tistory.com

이전 글에서 fastApi로 파이썬 파일을 만들어서 웹에 띄워보았다. 그러나 main.py에만 데이터들이 과중될 수 있기 때문에

MVC 패턴에서 사용할 수 있는 Controller로 따로 분리시켜보려고한다. fastApi에서는 이를 Router라고도 부른다.

 

items.py

items라는 py 파일을 새로 만들어서, 그곳에 main.py에 있던 코드들을 복붙 해오고, 몇가지 바꾸었다.

 

크게 바뀐점은 main.py에 있던 items라는 url을 items.py 파일을 새로 만들어서 그곳에 옮겨주었다.

main에만 url들을 추가하면 main에만 과도하게 데이터들이 많아 파일을 관리하기 힘들기 때문에 controller를 만든다.

 

from typing import Union
from fastapi import APIRouter

router = APIRouter(
    prefix="/items",
    tags=["items"],
    responses={404: {"description": "Not found"}},
)


@router.get("/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

 

1. from fastapi import APIRouter

 -  fastAPI의 라우터 기능을 불러오는 것이다. Router는 Controller와 같다.

 

2. router = APIRouter( ... )

2-1 . prefix = "/items"

 - 이 APIRouter로 만든 모든 API경로 앞에 /items 가 붙는다.

 

2-2 . tags=["items"]

 - Swagger UI(/docs)에서 API를 그룹으로 묶을 때 사용한다. SwaggerUI에서 섹션 이름으로 표시.

 

2-3 . responses = {404 : { "description" : "Not found" } }

 - 기본 response 문서를 지정하는 기능이다.

모든 라우트에 자동 적용 되며, Swagger 문서에 나타난다. 즉, 404가 발생할 수 있다는 문서 설명 자동 추가이다.

 

2-4 . @router.get( "/{item_id}" )

 - 이 라우터 안에서 GET 요청을 받는 API를 만든다는 뜻이다. ( 기존에는 app.get을 썼으나,  이렇게 router를 사용할 수 있다.)

 

 

3. Router 적용하기

main.py

main.py 파일로 넘어와서, items.py에서 만들었던 코드들을 적용해야한다.

우선 from controller import items를 한다.

3-1 . from controller import items

 - 아까 items.py의 router 객체를 가져오는 것을 뜻한다. 

 

3-2 . app = FastAPI()

 - FastAPI 애플리케이션 인스턴스를 생성한다. 이 인스턴스는 Flask의 app = Flask(__name__)와 같은 역할이다.

app = FastAPI(
    title="My API",
    version="1.0.0",
    description="FastAPI 프로젝트"
)

이런 식으로 쓰이기도 한다. 

 

3-3 . app.include_router(items.router)

 - ★ items.py에 정의 한 라우터를 FastAPI 앱에 등록하는 코드가 바로 위 코드다.

즉, 컨트롤러(라우터) 파일에서 API들을 가져와 묶어서 FastAPI 앱에 추가하는 것이다.

 

3-4 . @app.get( "/" )

 - 메인 페이지(root API)를 생성하는 부분이다.

 

 

 

이런식으로 이제 fastAPI에서 컨트롤러를 생성하는 방법도 알아보았다.

 

728x90
반응형

댓글