정지용
기술스택 목록
백엔드

FastAPI

프로젝트 2에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

Python 타입 힌트 기반으로 빠르게 RESTful API를 만드는 현대적인 웹 프레임워크

FastAPI는 Python 3.6+ 타입 힌트를 활용해 자동으로 검증, 직렬화, 문서화를 수행하는 웹 API 프레임워크입니다. Starlette를 기반으로 비동기 처리를 지원하며, Pydantic을 통해 요청/응답 데이터를 검증합니다. 개발자가 작성한 코드에서 자동으로 OpenAPI 스펙 문서를 생성하여, API 설계와 구현을 동시에 완성할 수 있습니다.

이럴 때 사용합니다

  • 타입 안정성을 유지하면서 빠르게 RESTful API를 만들고 싶을 때
  • 머신러닝 모델 서빙처럼 비동기 I/O가 많은 서비스를 구축할 때
  • API 문서를 별도로 관리하지 않고 코드에서 자동 생성하고 싶을 때
  • Python의 타입 힌트와 IDE 자동완성을 최대한 활용하고 싶을 때

핵심 개념

Path Operation
HTTP 메서드와 경로를 데코레이터로 선언하는 방식. @app.get(), @app.post() 등으로 엔드포인트를 정의합니다.
Pydantic Model
요청 본문이나 응답 구조를 타입 힌트가 있는 클래스로 정의하면, FastAPI가 자동으로 검증·직렬화·문서화를 수행합니다.
Dependency Injection
함수 매개변수로 의존성을 선언하면 FastAPI가 자동으로 주입. 데이터베이스 세션, 인증 정보 등을 재사용 가능하게 관리합니다.
async/await
비동기 함수로 엔드포인트를 정의하면 I/O 대기 시간 동안 다른 요청을 처리할 수 있어 동시성이 높아집니다.
Interactive API Docs
코드에서 자동 생성되는 Swagger UI와 ReDoc 문서. /docs, /redoc 경로에서 즉시 API를 테스트할 수 있습니다.

간단한 FastAPI 애플리케이션

루트 경로와 POST 엔드포인트를 정의한 예시. Item 모델로 요청 본문을 자동 검증하고, /docs에서 즉시 문서를 확인할 수 있습니다.

Python
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float

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

@app.post("/items/")
async def create_item(item: Item):
    # item.name, item.price는 자동으로 검증됨
    return {"item_name": item.name, "total": item.price * 1.1}

처음 쓸 때 흔한 함정

  • async 함수 안에서 블로킹 I/O(파일 읽기, 동기 DB 호출)를 쓰면 성능이 오히려 떨어집니다
  • Pydantic 모델 필드에 타입 힌트를 빠뜨리면 검증이 작동하지 않습니다
  • 의존성 주입 함수는 매 요청마다 호출되므로, 무거운 초기화는 startup 이벤트로 분리해야 합니다

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.