FastAPI란?

주요특징

  1. 빠른 성능

    1. Starlette과 Pydantic 위에 구축되어 매우 빠르다
    2. Node..js, Go와 유사한 수준의 성능을 자랑함 (ASGI 기반)
  2. 타입 힌트 기반의 선언형 문법

    1. Python 3.6+의 type hint를 활용하여 API 입력/출력을 선언한다.
    2. 이를 통해 자동 검증, 자동 문서화가 가능
    from fastapi import FastAPI
    
    app = FastAPI()
    
    @app.get("/hello")
    def read_hello(name: str):
        return {"message": f"Hello, {name}"}
    
  3. 자동 API 문서 생성

    1. /docs → Swagger UI
    2. /redoc → ReDoc UI
    3. API 정의만 하면 문서를 자동으로 만들어준다.
  4. Pydantic 기반의 데이터 검증

    1. 입력 값에 대한 타입, 범위, 유효성 검사를 손쉽게 수행
    2. JSON Schema와 연동하여 오류 메셋지도 자동화
  5. 비동기 처리 지원(astnc/await)

    1. I/O 바운드 작업(예: DB, 외부 API 호출)에 대해 비동기 처리 가능
    2. 더 높은 처리량과 응답 속도 향상
  6. 모듈화, 확장성

    1. 프로젝트를 모듈화하고, 의존성 주입도 쉽게 구성가능
    2. OAuth2, JWT 등 인증 시스템도 내장 지원.

간단한 POST API

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

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

@app.post("/items/")
async def create_item(item: Item):
    return {"item_name": item.name, "item_price": item.price}

이 코드는 /items/로 POST 요청이 들어올 때 JSON 데이터를 Item 모델로 검증하고 응답하는 예입