Router Tags 활용

2025. 2. 1. 10:10·파이썬/Fast API
반응형

FastAPI의 include_router에서 사용되는 tags는 OpenAPI(Swagger) 문서화와 API 그룹화에 매우 유용합니다. 특히 Enum을 활용하면 일관성 있는 태그 관리가 가능합니다.

기본적인 태그 사용법

가장 단순한 형태의 태그 사용입니다.

from fastapi import APIRouter, FastAPI

app = FastAPI()
router = APIRouter()

# 문자열 리스트로 태그 지정
app.include_router(
    router,
    prefix="/users",
    tags=["users", "auth"]  # 여러 태그 지정 가능
)

Enum을 활용한 태그 관리

대규모 애플리케이션에서는 Enum을 사용하여 태그를 체계적으로 관리할 수 있습니다.

from enum import Enum
from fastapi import APIRouter, FastAPI

class Tags(str, Enum):
    USERS = "users"
    ADMIN = "admin"
    ITEMS = "items"
    AUTHENTICATION = "authentication"
    MONITORING = "monitoring"

app = FastAPI()

# 사용자 관련 라우터
user_router = APIRouter()
app.include_router(
    user_router,
    prefix="/users",
    tags=[Tags.USERS, Tags.AUTHENTICATION]
)

# 관리자 관련 라우터
admin_router = APIRouter()
app.include_router(
    admin_router,
    prefix="/admin",
    tags=[Tags.ADMIN, Tags.MONITORING]
)

태그별 문서화 설정

각 태그에 대한 상세 설명을 추가할 수 있습니다.

from fastapi import FastAPI
from enum import Enum

class Tags(str, Enum):
    USERS = "users"
    ITEMS = "items"

app = FastAPI(
    title="My API",
    openapi_tags=[
        {
            "name": Tags.USERS,
            "description": "사용자 관리 관련 작업",
            "externalDocs": {
                "description": "사용자 관리 문서",
                "url": "https://example.com/docs/users",
            },
        },
        {
            "name": Tags.ITEMS,
            "description": "상품 관리 관련 작업",
        },
    ]
)

태그를 활용한 권한 관리

태그를 기반으로 API 접근 권한을 관리할 수 있습니다.

from enum import Enum
from fastapi import Depends, HTTPException, Security
from fastapi.security import OAuth2PasswordBearer

class UserRole(str, Enum):
    ADMIN = "admin"
    USER = "user"

class Tags(str, Enum):
    ADMIN = "admin"
    USER = "user"

def check_tag_permission(required_role: UserRole):
    async def permissions_dependency(
        user_role: UserRole = Depends(get_user_role)
    ):
        if user_role != required_role:
            raise HTTPException(
                status_code=403,
                detail="Permission denied"
            )
    return permissions_dependency

admin_router = APIRouter(dependencies=[Depends(check_tag_permission(UserRole.ADMIN))])
app.include_router(
    admin_router,
    prefix="/admin",
    tags=[Tags.ADMIN]
)

이처럼 include_router의 tags 매개변수는 단순한 문서화 도구를 넘어서, 애플리케이션의 구조화와 권한 관리에도 활용할 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'파이썬 > Fast API' 카테고리의 다른 글

프로젝트 배포 자동화 가이드 Part 1: 개발 환경 구성  (1) 2025.02.03
FastAPI-Cache로 구현하는 효율적인 API 캐싱  (0) 2025.02.02
테스트, 배포, 성능 최적화 - Part 3  (0) 2025.01.31
라우터 구현과 에러 처리 - Part 2  (0) 2025.01.31
프로젝트 구조와 기본 설정 - Part 1  (0) 2025.01.31
'파이썬/Fast API' 카테고리의 다른 글
  • 프로젝트 배포 자동화 가이드 Part 1: 개발 환경 구성
  • FastAPI-Cache로 구현하는 효율적인 API 캐싱
  • 테스트, 배포, 성능 최적화 - Part 3
  • 라우터 구현과 에러 처리 - Part 2
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    programmerlife
    devlife
    카페24리뷰이관
    codingtips
    Python
    유니티
    셀레니움
    ipcamera
    learntocode
    unity
    list
    상품 리뷰 크롤링
    리스트
    스마트스토어리뷰
    카페24리뷰
    긴유통기한우유
    codingcommunity
    appdevelopment
    믈레코비타멸균우유
    C#
    쇼핑몰리뷰
    스크립트 실행 순서
    리뷰관리
    rtsp
    라떼우유
    리뷰이관
    파이썬
    cv2
    programming101
    스크립트 실행
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Router Tags 활용
상단으로

티스토리툴바