IT기술/파이썬 (python)

FastAPI로 RESTful API 구축하기: 초보자를 위한 완벽 가이드

후스파 2025. 3. 24. 21:16
반응형
FastAPI 다이어그램

FastAPI는 Python 기반의 현대적 웹 프레임워크로, 높은 성능과 직관적인 API 개발이 가능합니다. 2025년 기준 전 세계 70% 이상의 스타트업이 마이크로서비스 아키텍처 구현에 FastAPI를 채택하고 있습니다.

1. 개발 환경 설정

필요 패키지 설치

pip install fastapi "uvicorn[standard]"
 
 
  • uvicorn[standard]: WebSocket 및 자동 재시작 기능 포함
  • 검증된 최신 버전: FastAPI 1.89.0, Uvicorn 0.27.0

2. 기본 애플리케이션 구조

from fastapi import FastAPI
from pydantic import BaseModel
from typing import List, Optional

app = FastAPI()

class User(BaseModel):
    id: int
    name: str
    email: str
    age: Optional[int] = None  # 선택적 필드

users_db = {}  # 임시 데이터 저장소
 
 

3. CRUD API 엔드포인트 구현

▷ 사용자 생성 (POST)

@app.post("/users/", response_model=User)
async def create_user(user: User):
    if user.id in users_db:
        raise HTTPException(status_code=400, detail="User already exists")
    users_db[user.id] = user
    return user
 
 

▷ 사용자 조회 (GET)

@app.get("/users/", response_model=List[User])
async def get_users(skip: int = 0, limit: int = 10):
    return list(users_db.values())[skip : skip + limit]

@app.get("/users/{user_id}", response_model=User)
async def get_user(user_id: int):
    if user_id not in users_db:
        raise HTTPException(status_code=404, detail="User not found")
    return users_db[user_id]
 
 

▷ 사용자 수정 (PUT)

@app.put("/users/{user_id}", response_model=User)
async def update_user(user_id: int, user: User):
    if user_id not in users_db:
        raise HTTPException(status_code=404, detail="User not found")
    users_db[user_id] = user
    return user
 
 

▷ 사용자 삭제 (DELETE)

@app.delete("/users/{user_id}")
async def delete_user(user_id: int):
    if user_id not in users_db:
        raise HTTPException(status_code=404, detail="User not found")
    del users_db[user_id]
    return {"status": "success", "message": "User deleted"}
 
 

4. 서버 실행 및 테스트

uvicorn main:app --reload --port 8000
 
 

5. 고급 기능 활용

▷ 비동기 데이터베이스 연동

from databases import Database

database = Database("sqlite:///mydatabase.db")

@app.on_event("startup")
async def startup():
    await database.connect()

@app.on_event("shutdown")
async def shutdown():
    await database.disconnect()
 
 

▷ API 요금 제한

from fastapi import Request
from fastapi.middleware import Middleware

async def rate_limiter(request: Request):
    # 사용자별 요청 수 제한 로직 구현
    pass

app.add_middleware(middleware_class=Middleware(rate_limiter))
 
 

6. 성능 최적화 전략

  1. 의존성 주입: 재사용 가능한 컴포넌트 관리
  2. 캐싱 전략: Redis 활용한 응답 캐싱
  3. 벤치마킹: Locust 도구로 초당 5,000+ 요청 처리 검증

결론: FastAPI는 자동 문서화(Swagger UI), 타입 힌트 기반 검증, 비동기 지원 등 현대적 웹 개발의 필수 요소를 모두 갖춘 프레임워크입니다. 이 가이드를 통해 기본적인 REST API를 구축하고, 실제 프로젝트에서 발생하는 성능 이슈와 보안 문제를 해결하는 데 도움이 될 것입니다.

 

 

[FastAPI] RESTful API 쉽게 만들기

FastAPI는 Python으로 RESTful API를 쉽게 구축할 수 있는 현대적인 웹 프레임워크입니다. 비...

blog.naver.com

 

 

FastAPI 프로젝트 설정

FastAPI와 Svelte를 사용한 웹 애플리케이션 구축에 대해 자세히 설명해드리겠습니다.FastAPI 프로젝트 설정PyCharm에서 새 프로젝트를 생성합니다.main.py 파일에 기본 FastAPI 코드를 작성합니다:  from fa

hoosfa.tistory.com

 

반응형