기술블로그-Fastapi편

🔄 DRF Serializer vs FastAPI Pydantic 비교 정리

Chansman 2025. 5. 26. 18:25

🔄 DRF Serializer vs FastAPI Pydantic 비교 정리


✅ 공통 역할

  • 입력된 JSON 데이터를 Python 객체로 변환
  • 데이터 타입 검증 및 유효성 검사 수행
  • 자동 타입 변환 지원 ("20" → 20)

🧠 핵심 비교표

항목 DRF - Serializer FastAPI - Pydantic

사용 클래스 serializers.Serializer pydantic.BaseModel
주요 목적 View 내부 데이터 검증/변환 Request Body 자동 검증 및 타입 추론
자동 타입 변환 ✅ 지원됨 ("20" → 20) ✅ 더 강력하게 지원됨
유효성 검사 .is_valid() 후 .validated_data 함수 인자로 모델 선언 시 자동 검사 수행
에러 처리 수동 .errors 확인 자동 422 에러 응답 반환
문서화 DRF 자체는 없음 (Swagger는 drf-yasg 등 필요) OpenAPI 자동 문서화 (/docs)

🔍 실제 예시 비교

✅ DRF 예시

from rest_framework import serializers

class PersonSerializer(serializers.Serializer):
    name = serializers.CharField()
    age = serializers.IntegerField()

# 문자열도 자동 int 변환
serializer = PersonSerializer(data={"name": "John", "age": "20"})
serializer.is_valid()  # True
serializer.validated_data["age"]  # 20 (int)

✅ FastAPI 예시

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Person(BaseModel):
    name: str
    age: int

@app.post("/people")
def create_person(person: Person):
    return {"age_type": type(person.age).__name__}

요청:

{
  "name": "Alice",
  "age": "20"
}

응답:

{
  "age_type": "int"
}

💡 타입 자동 변환 예시

입력 필드 타입 결과

"20" int ✅ 변환됨 (20)
"스무살" int ❌ 에러 발생 (타입 불일치)

✅ 요약 한 줄

DRF의 Serializer와 FastAPI의 Pydantic은 모두 JSON → Python 변환과 검증을 담당하며,
FastAPI는 더 간단한 코드로 자동 문서화 + 타입 안정성까지 제공한다.