Inflearn brand logo image

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

daeyeon ko님의 프로필 이미지
daeyeon ko

작성한 질문수

FastAPI 완벽 가이드

Dependency Injection으로 Signed Cookie 정보 가져오기 - 로그인 여부에 따른 화면 Navigation 메뉴 수정 적용

152번 강의에서 질문이있습니다.

작성

·

18

0

router 계층에서 service계층의 get_all_blogs를 직접 호출하지않고 Depends로 넣어주는 이유가 뭔지 궁금합니다.

답변 2

0

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

안녕하십니까,

질문을 잘 이해하지 못했습니다.

Depends에 서비스 계층의 get_all_blogs()를 넣어주는 코드가 해당 영상에 있나요? router의 blog.py의 get_all_blogs()의 Depends 내에는 get_session() 이 들어가 있습니다.

다시 한번 질문 내용을 확인 부탁드립니다.

 

0

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

FastAPI의 Depends()는 의존성 주입을 위한 기능으로, 코드의 모듈화를 돕고 테스트를 용이하게 하는 유용한 도구입니다. router 계층에서 service 계층의 get_all_blogs를 직접 호출하는 대신 Depends를 사용하는 것은 주로 이러한 이유 때문입니다:

  1. 코드의 재사용성 및 모듈화: Depends를 사용하면 특정 함수나 클래스에 의존성을 분리할 수 있어, 각각의 구성 요소를 보다 독립적으로 사용할 수 있습니다. 이는 코드의 가독성을 높이고, 유지보수를 쉽게 해줍니다.

  2. 테스트 용이성: Depends를 사용하면 특정 함수의 동작을 테스트할 때 해당 함수가 필요로 하는 모든 의존성을 수동으로 설정할 필요 없이, 모의 객체(Mock)를 주입하여 손쉽게 테스트할 수 있습니다. 이는 특히 서비스 계층에서 로직을 처리할 때 테스트 시나리오를 구현하는 데 유리합니다.

  3. 캡슐화된 로직: 의존성을 Depends로 처리하면, 라우터에서 수행되는 작업의 세부 구현을 캡슐화할 수 있습니다. 이는 이후 구현을 변경하거나 확장할 때 로직을 격리시켜 수정을 최소화할 수 있도록 합니다.

  4. 자동화된 요청 생명주기 관리: FastAPI는 의존성을 처리하면서 요청의 생명주기를 자동으로 관리합니다. 이는 필요한 리소스를 요청의 시작과 끝에서 자동으로 초기화하고 정리(clean-up)하는 데 도움이 됩니다.

이와 관련된 자세한 내용이나 예시는 FastAPI의 공식 문서의 의존성 주입에서 확인할 수 있습니다. 이러한 설명이 이해에 도움이 되셨으면 합니다.

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

daeyeon ko님의 프로필 이미지
daeyeon ko

작성한 질문수

질문하기