Flask에서 FastAPI로 리팩터링 하기

최지웅·2025년 6월 26일

백엔드

목록 보기
1/6

flask에서 사실상 api기능(main.py)만 사용하고 있어서 이를 최적화해보려고 한다.

목적은 원활한 테스트 코드 작성과 문서화, 속도이다.

사실 GPT를 이용해서 바꿔보려했지만 잘 안되기도 했고 그정도의 규모도 아니기에 공부 겸 하나하나 직접 바꾸어보자.

main.py구성

공식 API 문서를 참고하여 기본 main.py를 구성하였다.

from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float
    is_offer: Union[bool, None] = None

@app.get("/")
def read_root():
    return {"Hello": "World"}

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

@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

GPT는 이전에 route.py등 다양한 파일 구성을 말하였지만 우선 기존의 main.py를 flask기반에서 fastapi형식으로만 옮겨보자.

flask -> fastapi

app.py->main.py로의 변환은 어렵지 않았다.
app.py(flask)

# =======================
# 📦 필수 모듈 임포트
# =======================
from flask import Flask, render_template, request, jsonify, make_response, send_file
import json
import logging
import os
from googlesearch import search
from datetime import datetime
import uuid
from openai import OpenAI
from dotenv import load_dotenv
import requests

# =======================
# 🚀 앱 초기화 및 설정
# =======================
app = Flask(__name__, static_folder='static', template_folder='templates')

main.py(fastapi)

import os
import json
import logging
import uuid
from datetime import datetime
import requests

from fastapi import FastAPI, Request, Response, Cookie, HTTPException
from fastapi.responses import JSONResponse, FileResponse

from openai import OpenAI
from dotenv import load_dotenv

from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

이정도의 차이이다.

profile
이제 4학년!!!

0개의 댓글