개발로 자기계발
article thumbnail
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

Dependencies 라우팅

company 디렉터리 하위에 dependencies.py 생성

현재 디렉토리 구조

 

dependencies.py 파일 수정

from fastapi import Header, HTTPException



async def get_token_header(internal_token: str = Header(...)):
    if internal_token != "allowed":
        raise HTTPException(status_code=400, detail="Internal-Token header invalid")
        
#internal_token 값으로 allowed가 아니라면 에러 발생

 

main.py 파일 수정

from fastapi import FastAPI, Depends
import models
from database import engine
from routers import auth, todos
#dependencies 삽입
from company import companyapis, dependencies

app = FastAPI()

models.Base.metadata.create_all(bind=engine)

app.include_router(auth.router)
app.include_router(todos.router)
#라우터 옵션 추가
app.include_router(
    companyapis.router,
    prefix="/companyapis",
    tags=["companyapis"],
    #종속성 추가 사용자 지정 Token 헤더를 읽는다.
    dependencies=[Depends(dependencies.get_token_header)],
    responses={418: {"description": "Internal Use Only"}}
                   )

 

3. Swagger 확인

companyapis의 API를 호출할 때 지정 해준 토큰 외에 값을 넣게 되면 에러가 난다.(dependencies 역할)

 

token == "test"를 넣게 되면 에러

 

token == "allowed"를 넣게 되면 성공

728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)