FastAPI의 응답 모델링과 데이터 유효성 검사 기능 알아보기

FastAPI는 최신 웹 프레임워크로서, 높은 성능과 쉬운 개발 과정을 제공합니다. 이번 포스트에서는 FastAPI의 두 가지 주요 기능인 응답 모델링과 데이터 유효성 검사에 대해 알아보겠습니다.

응답 모델링

FastAPI는 Pydantic이라는 파이썬 라이브러리를 기반으로 응답 모델링을 지원합니다. Pydantic을 사용하여 응답 데이터의 형식을 선언하고, FastAPI는 이를 기반으로 자동으로 JSON 스키마를 생성합니다.

예를 들어, 사용자 정보를 반환하는 API가 있다고 가정해봅시다. 이 API의 응답 모델을 정의하기 위해 다음과 같이 코드를 작성할 수 있습니다:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
    id: int
    name: str
    email: str

@app.get("/users/{user_id}")
def get_user(user_id: int):
    user = fetch_user_from_database(user_id)
    return user

위의 코드에서는 User라는 Pydantic 모델을 정의하고, /users/{user_id} 엔드포인트에서 해당 사용자의 정보를 가져와 반환합니다. FastAPI는 User 모델을 사용하여 응답 데이터의 형식을 추론하고, 자동으로 알맞은 JSON 스키마를 생성합니다.

데이터 유효성 검사

FastAPI는 응답 데이터뿐만 아니라 요청 데이터의 유효성도 검사할 수 있는 기능을 제공합니다. 이를 통해 잘못된 데이터 전송을 방지하고, 보다 안정적인 애플리케이션을 구현할 수 있습니다.

Pydantic을 사용하여 데이터 유효성 검사를 구현할 수 있습니다. 예를 들어, 사용자 생성 API에서 요청 데이터의 유효성을 검사하기 위해 다음과 같이 코드를 작성할 수 있습니다:

from fastapi import FastAPI
from pydantic import BaseModel, EmailStr

app = FastAPI()

class UserCreate(BaseModel):
    name: str
    email: EmailStr

@app.post("/users")
def create_user(user: UserCreate):
    # user 객체는 이미 유효성 검사를 통과한 데이터입니다.
    saved_user = save_user_to_database(user)
    return saved_user

위의 코드에서는 UserCreate라는 Pydantic 모델을 정의하고, /users 엔드포인트에서 사용자 생성 요청의 유효성을 검사합니다. name은 문자열 형식이어야 하고, email은 올바른 이메일 형식이어야 합니다. FastAPI는 이러한 유효성 검사를 자동으로 처리하고, 잘못된 데이터가 전송되는 것을 방지합니다.

결론

FastAPI는 강력한 응답 모델링과 데이터 유효성 검사 기능을 제공하여 웹 개발을 보다 쉽고 안정적으로 만들어줍니다. Pydantic을 사용하여 데이터 형식을 선언하고, FastAPI는 이를 기반으로 JSON 스키마를 자동으로 생성하고 데이터 유효성을 검사합니다. 이를 통해 개발자는 보다 효율적이고 안전한 API를 개발할 수 있습니다.

#FastAPI #데이터유효성검사