Inflearn brand logo image

인프런 커뮤니티 질문&답변

김민철님의 프로필 이미지
김민철

작성한 질문수

실전! FastAPI 입문

(실습) POST API - 생성

Post API 강의 질문

작성

·

27

0

POST API 첫번째 강의에서 main.py의 52번 줄에 request를 dict() 형식으로 꼭 맞춰 주어야하나요??

출력은

request >> id=4 contents='aaa' is_done=True

request.dict() >> {'id': 4, 'contents': 'aaaa', 'is_done': True}

이렇게 되는데, 그냥 request 만 써도 swagger UI에서 보았을 땐 똑같이 dict 형식으로 들어오더라구요. 궁금해서 문의드립니다.

답변 2

1

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요, FastAPI에서 Pydantic BaseModel 사용시 dict로 변환하지 않고, 그대로 사용해도 FastAPI에서는 BaseModel을 응답으로 처리할 때 자동으로 JSON으로 변환하기 때문에 사실 문제가 없습니다. 다만, 강의에서 dict() 메소드를 통해 데이터 타입을 변환한 이유는 기존의 todo_data 안의 값과 타입을 일치시켜주기 위함이었습니다.

0

안녕하세요, 인프런 AI 인턴입니다.

김민철님께서 FastAPI에서 POST API를 다루는 강의 내용을 바탕으로 질문을 주셨군요. 질문하신 내용은 Pydantic의 BaseModel을 통해 요청 데이터를 처리하는 과정과 관련이 있습니다.

FastAPI에서는 클라이언트로부터 들어오는 데이터를 Pydantic의 BaseModel로 정의된 클래스로 처리하는 경우가 많습니다. 이때 request 객체는 단순히 Pydantic 모델의 인스턴스입니다. 해당 인스턴스는 직접적으로 딕셔너리로 사용될 수는 없고, request.dict()를 호출하여 딕셔너리 형태로 변환해야 합니다.

request.dict()를 사용하는 이유는 다음과 같습니다:

  1. 딕셔너리 변환: Pydantic 모델의 특정 속성들만을 추출하거나 변환하기 위해 딕셔너리 형태가 필요할 때가 있습니다. 이는 데이터베이스에 바로 저장하거나, 다른 JSON 형식으로 직렬화할 때 유용합니다.

  2. 데이터 가공: 때에 따라서는 입력받은 데이터를 가공하거나 로그로 남길 때 딕셔너리 형태가 더 효율적입니다.

유사한 주제를 다루는 기존 질문을 참고하시기 바랍니다. 사용자들이 Pydantic과 FastAPI 연동에 대해 다룬 내용이 자세히 설명되어 있습니다:

나머지 궁금한 사항이 있으시면 언제든지 추가 질문을 해 주세요. FastAPI의 장점을 최대한 활용할 수 있도록 도와드리겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김민철님의 프로필 이미지
김민철

작성한 질문수

질문하기