작성
·
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()
를 사용하는 이유는 다음과 같습니다:
딕셔너리 변환: Pydantic 모델의 특정 속성들만을 추출하거나 변환하기 위해 딕셔너리 형태가 필요할 때가 있습니다. 이는 데이터베이스에 바로 저장하거나, 다른 JSON 형식으로 직렬화할 때 유용합니다.
데이터 가공: 때에 따라서는 입력받은 데이터를 가공하거나 로그로 남길 때 딕셔너리 형태가 더 효율적입니다.
유사한 주제를 다루는 기존 질문을 참고하시기 바랍니다. 사용자들이 Pydantic과 FastAPI 연동에 대해 다룬 내용이 자세히 설명되어 있습니다:
나머지 궁금한 사항이 있으시면 언제든지 추가 질문을 해 주세요. FastAPI의 장점을 최대한 활용할 수 있도록 도와드리겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.