목차
반응형
0. 디자인 패턴(Design Pattern)
0.1. 설명
- 소프트웨어 개발 과정에서 반복적으로 나타나는 문제들을 해결하기 위해 제안된 재사용 가능한 솔루션
- 특정한 상황에서의 최선의 설계 방법을 정의
0.2. 장점
- 코드 재사용성 증가
- 유지보수성 향상
- 개발 시간 단축
- 효율적인 협업
- 유연하고 확장 가능한 코드
0.3. 단점
- 초보 개발자에게는 어려움
- 과도한 설계 / 남용의 위험
1. 의존성 주입(Dependency Injection) 개념
1.1. 설명
- 특정 값을 외부 함수에서 전달받는 방식
1.2. 장점
- 코드 재사용성 증가 (데이터베이스 연결, 인증 토근 검증, 사용자 정보 추출 등)
- 테스트 코드 작성 용이 (개발환경, 테스트 환경에 따라 다른 의존성을 줄 수 있음)
- 특정 로직을 모듈화 (하나의 로직이 하나의 책임만)
- 비즈니스 로직과 기숙적 로직분리 (가독성 증가)
2. 사용 방법
2.1. 기본 사용 방법
FastAPI에서는 Depends() 를 사용해 의존성 주입을 실행함.
1. 외부 로직을 함수로 정의한다.
2. <리턴값> = Depends(<함수명>) 과 같은 형식으로 사용한다.
3. 의존성 함수의 반환값은 엔드포인트 함수의 매개변수로 전달된다.
from fastapi import Depends
def get_db():
db = connect_to_db()
try:
yield db
finally:
db.close()
@app.get('/users/')
def get_users(db=Depends(get_db)):
users = db.execute("select * from users")
return users
2.2. 의존성 함수에 매개변수가 있는 경우
만약 외부 로직에서 매개변수를 받는다면,
엔드포인트에서 쿼리(Query) 또는 경로(Path), 요청본문(Body)으로 받을 수 있다.
# 의존성 함수
def dependency_func(user_name: str = Query(...)):
return user_name
@app.get('/user/')
def get_user(a: str = Depends(dependency_func)):
return {'result': a}
반응형
'Fastapi' 카테고리의 다른 글
[FastAPI] 디자인 패턴-미들웨어 패턴(Middleware Pattern) (11-3) (0) | 2025.01.27 |
---|---|
[FastAPI] 디자인패턴-팩토리 패턴(Factory Pattern) (11-2) (0) | 2025.01.27 |
[FastAPI] 예외(Exception) 처리 방법 (10) (0) | 2025.01.19 |
[FastAPI] API의 Output (9) (0) | 2025.01.19 |
[FastAPI] API의 Input (8) (0) | 2025.01.19 |