[python] FastAPI에서 요청 데이터 검증하기

FastAPI는 Python 웹 프레임워크 중 하나로, 높은 성능과 간결한 코드를 지원하여 개발자들에게 많은 인기를 얻고 있습니다. 이번 포스트에서는 FastAPI에서 요청 데이터를 검증하는 방법에 대해 알아보겠습니다.

FastAPI는 Pydantic이라는 라이브러리를 사용하여 데이터 모델링과 검증을 처리합니다. 따라서 요청 데이터의 검증은 Pydantic 모델을 사용해 수행됩니다.

먼저, FastAPI 프로젝트에서 요청을 받을 API 엔드포인트를 만들어보겠습니다.

from fastapi import FastAPI

app = FastAPI()

@app.post("/users/")
async def create_user(user: User):
    ...

위 코드에서 /users/ 엔드포인트는 POST 메소드로 요청을 받습니다. create_user 함수는 user라는 매개변수를 받아와서 처리합니다. 이때 user 매개변수는 User라는 Pydantic 모델을 사용하여 검증됩니다.

Pydantic 모델은 데이터를 검증하고 타입을 지정하기 위해 필드를 사용합니다. 예를 들어, 다음과 같이 User 모델을 정의할 수 있습니다.

from pydantic import BaseModel

class User(BaseModel):
    username: str
    email: str
    age: int

User 모델은 username, email, age 필드로 구성되어 있으며, 각 필드의 타입도 지정되어 있습니다.

이제 FastAPI는 요청이 들어올 때 user 매개변수를 User 모델의 인스턴스로 변환하고 검증합니다. 만약 요청 데이터가 모델의 타입과 다르거나 필수 필드가 누락되었다면, FastAPI는 자동으로 400 Bad Request 응답을 반환합니다.

또한, Pydantic 모델은 유효성 검사를 위한 다양한 기능을 제공합니다. 예를 들어, email 필드를 이메일 주소 형식으로만 입력받도록 제한할 수 있습니다.

from pydantic import EmailStr

class User(BaseModel):
    username: str
    email: EmailStr
    age: int

위 코드에서 email 필드의 타입을 EmailStr로 지정함으로써, FastAPI는 입력값이 올바른 이메일 주소 형식인지 확인합니다. 이외에도 필드에 대한 제한 조건이나 기본값을 설정할 수도 있습니다.

FastAPI에서 요청 데이터를 검증하는 방법에 대해 알아보았습니다. Pydantic을 사용하여 간편하게 데이터 모델링과 검증을 처리할 수 있으며, 각 필드의 타입과 제약 조건 등을 정의하여 정확한 데이터를 받을 수 있습니다.

더 자세한 내용은 FastAPI 공식 문서와 Pydantic 문서를 참조하시기 바랍니다.