FastAPI에서 `Depends()`를 활용한 의존성 주입 마스터하기
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
FastAPI를 사용하는 백엔드 개발자, API 설계자
난이도: 중급 (의존성 주입 개념 이해 필수)
핵심 요약
Depends()
를 통해 API 키 검증, 페이징 로직, 데이터베이스 세션 등 공통 로직을 재사용 가능하게 주입할 수 있음Header
와 결합해 헤더 기반 인증을 구현할 수 있고, 쿼리 파라미터를 의존성으로 활용해 중복 코드 제거 가능Depends()
는 FastAPI가 자동으로 실행하고, 반환 값을 주입해 코드 가독성과 유지보수성 향상
섹션별 세부 요약
1. 의존성 주입이란?
- 의존성 주입은 공통 로직을 한 번 정의해 여러 라우트에서 재사용하는 패턴
- 예: API 키 검증이나 페이징 로직을
Depends()
로 주입하면 중복 코드 제거 가능 - FastAPI에서
Depends()
는 의존성 함수를 자동으로 실행하고, 반환 값을 주입해 개발자에게 투명하게 처리
2. `Depends()` 사용 예시: API 키 검증
Header
와 결합해 헤더에서 API 키 검증- ```python
def verify_api_key(x_api_key: str = Header(...)):
if x_api_key != "mysecret":
raise HTTPException(status_code=401, detail="Invalid API Key")
```
Depends(verify_api_key)
를 통해 인증 로직을 라우트에 주입- 인증 실패 시 401 에러 반환
3. `Depends()` 사용 예시: 페이징 로직
skip
과limit
쿼리 파라미터를 의존성 함수로 추출- ```python
def pagination(skip: int = 0, limit: int = 10):
return {"skip": skip, "limit": limit}
```
Depends(pagination)
을 통해 페이징 로직을 라우트에 주입- 중복된 쿼리 파라미터 정의 제거
4. `Depends()`의 주요 활용 사례
- API 키 인증:
Header
+Depends()
로 헤더 기반 인증 - 페이징:
skip
/limit
파라미터를 의존성으로 재사용 - 데이터베이스 세션: SQLAlchemy를 활용해 세션 주입
- 로그/메트릭: 모든 요청을 기록하는 공통 로직 주입
- 사용자 인증: JWT 또는 세션 기반 현재 사용자 추출
결론
Depends()
를 통해 공통 로직을 모듈화하고 재사용해 코드 중복 제거- API 키 검증과 페이징 로직 등 실무에서 자주 사용되는 예시를 참고하여 의존성 주입 패턴 적용
- FastAPI의 의존성 주입 기능을 활용하면, 보안성, 유지보수성, 코드 품질이 동시에 향상됨