해결된 질문
작성
·
265
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 까지 끌고와야 할까요 ??
답변 1
0
네, FastAPI를 사용하신다면 그렇습니다. FastAPI의 Depends는 재귀적으로 호출되기 때문에 연관된 컴포넌트를 DI로 주입해주셔야 합니다.
다만 컴포넌트를 어디에 어떻게 주입할 지는 어떤 소프트웨어 아키텍쳐를 적용할 지에 따라 다를 수 있습니다.
감사합니다 !