inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! FastAPI 입문

(실습) Repository Pattern - 레포지토리 패턴

DI 주입

해결된 질문

359

SJ

작성한 질문수 155

0

현재구조는

todo.py ( controller 역할 )

@router.get("/", status_code=200)
def get_todos_handler(
    order: str | None = None,
    todo_repo: ToDoRepository = Depends(ToDoRepository),
) -> TodoListSchema:
    todos: List[ToDo] = todo_repo.get_todos()
    if order and order == "DESC":
        return TodoListSchema(
            todos=[ToDoSchema.from_orm(todo) for todo in todos[::-1]]
        )
    return TodoListSchema(
        todos=[ToDoSchema.from_orm(todo) for todo in todos]
    )

repository.py ( service 와 repository 역할 )
로 되어있다면

 


class ToDoRepository:
    def __int__(self, session: Session):
        self.session = session

    def get_todos(self) -> List[ToDo]:
        return list(self.session.scalars(select(ToDo)))

만약

controller, service , repository 로 구조를 변경한다고 했을때도

controller 에서 부터

todo_repo: ToDoRepository = Depends(ToDoRepository)

를 작성해서 service -> repository 까지 끌고와야 할까요 ??

 

 

python 리팩토링 orm FastAPI pytest

답변 1

0

신동현

네, FastAPI를 사용하신다면 그렇습니다. FastAPI의 Depends는 재귀적으로 호출되기 때문에 연관된 컴포넌트를 DI로 주입해주셔야 합니다.

다만 컴포넌트를 어디에 어떻게 주입할 지는 어떤 소프트웨어 아키텍쳐를 적용할 지에 따라 다를 수 있습니다.

1

SJ

감사합니다 !

FasAPI Swagger UI에서 단일조회 todo_id 를 사용했는데, 입력값에 1을 넣으니 오류가 뜹니다 ㅠ

0

87

2

DB 질문

0

81

2

Post API 강의 질문

0

55

2

post 작성 오류

0

107

3

uvicorn 종료 문제

0

436

2

왜 return타입이 ToDo라는 스트링인가요?

0

130

2

ORM 연관관계

0

109

2

Oracle DB 연결과 관련해 질문이 있습니다..

0

153

2

섹션 2, 3의 PATCH API의 차이점

0

132

1

ORM 테이블 생성

0

119

1

테스트 코드 오류

0

177

1

orm relationship 정의 중 해당 에러 발생 시 어떻게 고쳐야 하는걸까요

0

214

3

FastAPI 폴더 구조에 대해 질문이 있습니다.

0

412

2

질문 있습니다.

0

161

2

ORM 개념

0

133

1

mysql root 비밀번호 변경관련

0

296

2

[질문] patch API

0

151

3

디자인 패턴

0

128

1

main.py 리로드문제

0

235

2

인터프리터 오류

0

286

4

로그 저장에 대한 질문입니다.

0

100

1

Internal Server Error

0

240

2

PATCH API - 수정

0

199

2

파이참 임포트 문제

0

263

1