기술블로그-Fastapi편

📦 FastAPI에서 Request Body + Pydantic 사용법

Chansman 2025. 5. 26. 18:08

📦 FastAPI에서 Request Body + Pydantic 사용법


✅ Pydantic이란?

Pydantic은 FastAPI에서 JSON 요청 데이터를 받을 때 사용하는 데이터 모델링 + 검증 도구이다.

  • BaseModel을 상속받아 입력 데이터 구조 정의
  • 요청 데이터의 타입 검증, 기본값 처리, 에러 반환을 자동으로 해줌

🛠️ 사용 예시: POST 요청으로 JSON 데이터 받기

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# 1. 요청 데이터 모델 정의
class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = False  # 선택값 (기본값 지정)

# 2. POST 라우터 구현
@app.post("/items")
def create_item_handler(item: Item):
    return {
        "message": "Item received",
        "data": item.dict()
    }

🧪 요청 예시

POST /items
Content-Type: application/json

{
  "name": "Laptop",
  "price": 1299.99,
  "is_offer": true
}

📨 응답 결과:

{
  "message": "Item received",
  "data": {
    "name": "Laptop",
    "price": 1299.99,
    "is_offer": true
  }
}

⚠️ 잘못된 요청 시 에러 응답

요청:

{
  "name": "TV",
  "price": "cheap"
}

📛 자동 에러 응답:

{
  "detail": [
    {
      "loc": ["body", "price"],
      "msg": "value is not a valid float",
      "type": "type_error.float"
    }
  ]
}

✅ 정리 요약

기능 설명

📥 Request Body 클라이언트가 보내는 JSON 데이터를 받음
🔐 타입 검증 Pydantic이 자동으로 자료형 검사 수행
🧱 데이터 구조화 class Item(BaseModel) 로 구조 정의
📃 문서 자동화 Swagger 문서 /docs에 자동 반영
💥 에러 자동 응답 타입 불일치 시 422 에러 발생

✅ 한 줄 요약

FastAPI에서는 POST 요청 JSON 데이터 처리 시, Pydantic으로 안전하게 구조 + 타입 검사를 자동화하자!