강의

멘토링

커뮤니티

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

김근모님의 프로필 이미지
김근모

작성한 질문수

FastAPI 완벽 가이드

기존 Blog 글 수정하기 - 01

Update(수정)용 모델 질문 드립니다.

작성

·

20

0

안녕하세요 교수님

강의를 통해 많은 도움을 받고 있는 수강생입니다.

수정 기능 구현 시, 전체 데이터를 Body에 담아 보내는 방식은 대용량 파일이나 멀티파트 폼 데이터 처리 시 효율성이 떨어지는 경험을 했습니다.

그래서 모든 필드를 Optional로 설정하여 부분 수정을 허용하게 하면 벨리데이션(Validation) 로직이 복잡해지는 문제가 발생했습니다.

현업에서는 어떤 식으로 업데이트 코드 스타일을 관리하는 것이 표준인지 교수님의 조언을 듣고 싶습니다.

감사합니다.

답변 2

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

강의가 도움이 되었다니 저도 기쁘군요 ^^

업데이트 코드 스타일이 정해진 표준은 없습니다. 물론 좋은 방법들은 있을 순 있지만, 이는 적용 환경별로 달라질 수 있습니다. 질문 범위가 명확하면 제가 답변 드리는게 더 도움이 될 것 같습니다만,

예를 들어

"그래서 모든 필드를 Optional로 설정하여 부분 수정을 허용하게 하면 벨리데이션(Validation) 로직이 복잡해지는 문제가 발생했습니다." 라고 하셨는데, 어떠한 필드들을 update 속성들로 설정하셨고, 어떻게 수정을 허용해서 어떠한 검증 로직이 복잡해졌는지 예시를 부탁드립니다.

일반적으로 많은 필드들의 수정 시 이에 대한 검증 로직은 이뤄질 수 밖에 없습니다. 근데, 단순하게 자릿수라든지, 필드 타입이라든지, 공란등의 검증 정도를 복잡하다고 말하시는 건지, 아님 다른 부분을 의미하시는 건지 사례로 말씀해 주시면 좋을 것 같습니다.

감사합니다

 

0

안녕하세요, 인프런 AI 인턴입니다. 김근모님.

FastAPI에서 업데이트 기능을 구현할 때 직면할 수 있는 문제는 필드를 모두 Optional로 설정하여 부분 수정을 허용하면 validation 로직이 복잡해진다는 점입니다. 이 문제는 상당히 일반적이며, 현업에서도 다양한 방식으로 해결책을 모색합니다.

일반적인 접근 방식:

  1. PATCH 요청 사용: 업데이트 시 전체 데이터가 아니라 수정할 데이터만 요청으로 보내는 방법입니다. 일반적으로 HTTP PATCH 메소드를 사용하여 부분적으로 데이터를 수정합니다. 이 방법은 부담을 줄이고 네트워크 효율성을 향상시킵니다.

  2. 데이터 모델 분리: 업데이트와 생성(Create)을 위한 데이터 모델을 분리하세요. 즉, 생성할 때 필요한 필드와 업데이트할 때 필요한 필드를 구분함으로써 코드의 복잡성을 줄일 수 있습니다.

  3. 조건 로직 사용: Pydantic에서 pre=True를 사용하여 조건부 검증을 삽입하여, If-Else 구문을 통해 데이터가 있을 경우에만 검증을 진행하도록 로직을 구성합니다.

  4. Serializer 사용: (Django Rest Framework와 같은 방식) 특정 필드만 업데이트 가능한 Serializer를 만들어 관리하는 방법도 도움이 될 수 있습니다.

추천 강의 답변 URL:

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

김근모님의 프로필 이미지
김근모

작성한 질문수

질문하기