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
'Develop > FastAPI' 카테고리의 다른 글
FastAPI What is Alembic(upgrade/ downgrade 실습) - 70 (2) | 2023.01.22 |
---|---|
FastAPI Routing 실습 - 69 (0) | 2023.01.18 |
FastAPI External 라우팅 - 67 (0) | 2023.01.17 |
FastAPI Prefix 라우팅 - 66 (0) | 2023.01.17 |
FastAPI Todo 라우팅(main.py 수정) 확장성 확인 - 65 (0) | 2023.01.17 |