최근 수정 시각 : 2025-05-02 22:20:39

FastAPI

웹 프레임워크 기술
{{{#!wiki style="margin:0 -10px"
{{{#!folding [ 펼치기 / 접기 ]
{{{#!wiki style="margin:-5px 0px -10px; word-break:keep-all"
$ 유료 포함 • 취소선 단종 및 중단
<colbgcolor=#f6f6f9,#2f3241> 프론트엔드<colbgcolor=#fcfcfd,#272935> CSS BootstrapTailwind CSS$BulmaFoundationSkeletonPico
JSX ReactSolidJSAstroPreactGatsbyRemixInfernoQwik
JS AngularSvelteBackbone.jsjQueryAstrohtmxEmber.jsLit11tyMarkoVanJSAlpine.js
Vue Vue.jsVuePressGridsomeQuasarAstro
Python Reflex
백엔드 Java SpringStrutsGWTGrailsJoobyPlay! FrameworkScala
Kotlin Ktor
JS ExpressNestJSkoaHonofastify
.NET ASP.NET$
PHP LaravelCodeigniterReasonablephalconSymfonyzendCakePHPFuelPHPYiiSlimPHPixe
Python DjangoFlaskFastAPI
Ruby Ruby on RailsSinatra
Go GinechoFiber
풀스택 JSX Next.jsAstroSolidStartRemixQwik City
JS SvelteKitFreshAstroMarko
Vue Nuxt.jsAstro
Java Vaadin$
Python StreamlitReflex
Rust RocketActixLeptosAxum
하이브리드 .NET Blazor
Dart Flutter
Kotlin Kotlin Multiplatform
}}}}}}}}} ||
1. 개요2. 특성3. 여담4. 외부 링크

1. 개요

#!syntax python
from fastapi import FastAPI

app = FastAPI()

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

# ASGI 서버 (예: Uvicorn)를 통해 실행
# uvicorn main:app

FastAPI는 Python 3.7+ 버전의 표준 타입 힌트(Type Hints)를 기반으로 API를 구축하기 위한 현대적이고 빠른(고성능) 웹 프레임워크이다. 이름처럼 개발 속도의 빠름(Fast to code)과 요청 처리의 빠름(Fast to run)을 핵심 가치로 내세운다.

FastAPI는 웹 프레임워크 기능의 기반으로 ASGI 프레임워크인 Starlette을 사용하고, 데이터 유효성 검사, 직렬화 및 자동 문서 생성을 위해 Pydantic 라이브러리를 핵심적으로 활용한다. 이 덕분에 개발자는 복잡한 설정 없이 표준 파이썬 타입 힌트만으로 강력한 기능을 쉽게 구현할 수 있다. MIT 라이선스 하에 배포되는 완전한 오픈 소스 프로젝트이다.

2. 특성

FastAPI는 현대적인 API 개발에 필요한 다양한 기능을 간결하고 효율적으로 제공한다.
  • 고성능: Starlette과 Pydantic을 기반으로 하여 Node.jsGo와 비견될 만한 매우 높은 처리 성능을 제공한다.
  • 직관성 및 쉬운 학습 곡선: 잘 구조화되어 있고 사용하기 쉽도록 설계되었다. 공식 문서가 매우 상세하고 다양한 예제를 제공하여 배우기 쉽다.
  • 간결한 코드: 코드 중복을 최소화하도록 설계되었다. 예를 들어, 함수 매개변수에 타입 힌트를 선언하는 것만으로 요청 본문(request body), 경로 매개변수(path parameter), 쿼리 매개변수(query parameter), 쿠키 등을 정의하고 데이터 유효성 검사까지 동시에 수행할 수 있다.
  • 표준 기반: API 명세 작성을 위한 OpenAPI 표준과 데이터 구조 정의를 위한 JSON 스키마 표준을 완벽하게 지원하고 이를 기반으로 동작한다.
  • 타입 힌트의 적극적 활용: Pydantic과 연계하여 파이썬 표준 타입 힌트만으로 데이터 유효성 검사, 직렬화/역직렬화, 설정 관리 등을 처리한다.
  • 비동기 지원: 파이썬의 async, await 문법을 완벽하게 지원하여, ASGI 기반 위에서 높은 동시성 처리가 필요한 비동기 API를 쉽게 구현할 수 있다. 동기 함수 역시 일반적인 방식으로 지원한다.[1]

FastAPI의 코드는 대부분 Python으로 작성되었으며, 핵심적인 웹 기능과 데이터 처리 성능은 각각 Starlette과 Pydantic에 크게 의존한다.

3. 여담

  • Flask와 비교하면 데이터 검증, 비동기 처리, 자동 문서 생성 등 더 많은 기능을 내장하고 있으며, 풀스택 프레임워크인 Django보다는 가볍고 REST API 개발에 더 특화되어 있다.
  • FastAPI가 큰 인기를 얻으며 제출되는 이슈나 Pull Request(PR)의 양이 상당하지만, 프로젝트의 핵심적인 최종 검토 및 결정 권한은 여전히 창시자인 세바스티안 라미레스(tiangolo)에게 집중되어 있는 편이다. 이로 인해 기여 사항(PR)의 검토 및 병합에 병목 현상이 발생하여, 프로젝트의 규모나 커뮤니티의 기대에 비해 새로운 기능의 추가나 개선 속도가 상대적으로 더디다는 비판 혹은 우려 섞인 시각이 존재한다.[2]

4. 외부 링크



[1] 동기함수를 엔드포인트로 노출할 경우, 쓰레드를 사용한다.[2] 이로 인해 커뮤니티 기반의 개발 및 의사결정 구조를 지향하는 Litestar(구 Starlite)가 대안으로 고려되기도 한다.