728x90
Authentication Routing / Todo Routing / Prefix Routing / External Routing / Dependencies Routing
1. 라우팅 역할
- 애플리케이션의 구조를 위한 유연한 도구
- 확장 가능 한 아키텍처를 지원
- 파일 구조화를 도움
2. 구성할 프로젝트 구조
TodoApp | ||||
main.py database.py models.py |
TodoApp/routers | TodoApp/company | ||
auth.py | todos.py | companyapis.py | dependencies.py |
Prefix 라우팅
auth.py 파일 수정
#router = APIRouter()
router = APIRouter(
prefix="/auth",
tags=["auth"],
responses={401: {"user": "Not authorized"}}
)
prefix: auth.py안의 API의 모든 path는 /auth로 시작하게 된다.
tags: auth.py의 라우터는 auth라는 태그를 가진다.
todos.py 파일 수정
#router = APIRouter() 기존 값
router = APIRouter(
prefix="/todos",
tags=['todos'],
responses={404: {"description": "Not found"}}
)
#@router.get("/todos/user") 기존 값
@router.get("/user")
async def read_all_by_user(user: dict = Depends(get_current_user), db: Session = Depends(get_db)):
if user is None:
raise get_user_exception()
return db.query(models.Todos).filter(models.Todos.owner_id == user.get("id")).all()
#@router.get("/{todo_id}") 기존 값
@router.get("/todo/{todo_id}")
async def read_todo(todo_id: int, user:dict = Depends(get_current_user), db: Session = Depends(get_db)):
if user is None:
raise get_user_exception()
todo_model = db.query(models.Todos).filter(models.Todos.id == todo_id).filter(models.Todos.owner_id == user.get("id")).first()
if todo_model is not None:
return todo_model
raise http_exception()
prefix: todos.py안의 API의 모든 path는 /todos로 시작하게 된다.
tags: todos.py의 라우터는 todos라는 태그를 가진다.
728x90
SMALL
'Develop > FastAPI' 카테고리의 다른 글
FastAPI Dependencies 라우팅 - 68 (0) | 2023.01.17 |
---|---|
FastAPI External 라우팅 - 67 (0) | 2023.01.17 |
FastAPI Todo 라우팅(main.py 수정) 확장성 확인 - 65 (0) | 2023.01.17 |
FastAPI 라우팅 역할 및 인증 라우팅- 64 (0) | 2023.01.17 |
FastAPI Create Data for MySQL - 63 (0) | 2023.01.15 |