Data Navigator

FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기2 - Routing 본문

FastAPI

FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기2 - Routing

코딩하고분석하는돌스 2024. 5. 3. 16:13

 

FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기2 - Routing

1. APIRouter 클래스를 사용한 라우팅

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def welcome() -> dict:
    return { "message": "Hello World"}

위의 코드는 단일 경로를 사용하는 경우에 사용하는 방식이다. 여러 함수를 사용하는 연속적인 라우팅 처리는 APIRouter 클래스를 사용해야 한다.  APIRouter 사용을 위해 todo.py 파일을 만들고 라우팅 처리기를 만들자.

 

1) todo.py 파일 생성후 add_todo, retrive_todos 함수 작성

# todo.py

from fastapi import APIRouter

todo_router = APIRouter()

todo_list = []

@todo_router.post("/todo")
async def add_todo(todo: dict) -> dict:
    todo_list.append(todo)
    return {
        "message" : "Todo added successfully."
    }

@todo_router.get("/todo")
async def retrive_todos() -> dict:
    return {
        "todos" : todo_list
    }

 

2) api.py 파일에 todo.py 불러와 연결하기

FastAPI에서 사용하는 웹 서버인 uvicorn에서는 APIRouter()를 실행할 수 없고 오직 FastAPI()만 실행 가능하다. 따라서 api.py 파일을 수정해 APIRouter를 import 해와서 사용해야 한다.

api.py에 todo.py에서 정의한 APIRouter() 인스턴스인 todo_router를 불러오자.

welcome함수는 가장 위의 Hello World를 출력하는 것을 제외하고 나머지는 삭제한다.

from fastapi import FastAPI
from todo import todo_router

app = FastAPI()

@app.get("/")
async def welcome() -> dict:
    return { "message": "Hello World"}

app.include_router(todo_router)

 

3) 서버 실행 후 docs에서 테스트 하기

작성이 완료되었으면 파일을 저장하고(ctrl+s) 터미널에서 uvicorn으로 api.py를 실행한다.

uvicorn api:app --port 8000 --reload

 

 

웹브라우저를 열고 localhost:8000/docs로 접속

 

post 가 있는 메뉴의 드롭다운 메뉴를 열고 try it out 클릭

 

request body 창에 있는 {} 안에 아래의 내용을 입력하고 excute 버튼 클릭

{"id": 1, "item": "FastAPI todo 첫 테스트"}

 

response 쪽에 "message" : "Todo added successfully" 가 표시되는지 확인

 

response 쪽에 "message" : "Todo added successfully" 가 표시되고 서버를 실행시킨 terminal에서 응답 코드 200이 뜨면 성공

 

 

출처: 아데시나, 압둘라지즈 압둘라지즈. FastAPI를 사용한 파이썬 웹 개발. 번역 김완섭. 한빛미디어, 2023