
I. main.py의 내용 분리
main.py를 simple하게 만들기 위하여 inits.py와 root.py, swagger.py로 나누었다.
1. inits.py: 어플리케이션을 초기화하는 과정을 담는다. (라우터 및 lifespan 등록)
2. root.py: 임시로 Hello World 첫화면을 만들어보기 위한 파일
3. swagger .py: swagger docs와 swagger redoc의 경로와 내용을 수정하기 위한 파일
# Svelte_0.0.2/main.py
from app.core.inits import initialize_app
app = initialize_app()
# Svelte_0.0.2/app/core/inits.py
import os
import redis
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from app.core.database import ASYNC_ENGINE
from app.core.redis import redis_client
from app.core.settings import CONFIG
from app.views import root, swagger
def including_router(app):
app.include_router(swagger.router, prefix="/swagger")
app.include_router(root.router, prefix="", tags=["Root"]) # root 페이지는 / 슬래시를 없애라.
def initialize_app():
print("3. Initializing app.....APP_ENV, CONFIG.ORIGINS: ", CONFIG.APP_ENV, CONFIG.ORIGINS)
app = FastAPI(title=CONFIG.APP_NAME,
version=CONFIG.APP_VERSION,
description=CONFIG.APP_DESCRIPTION,
# lifespan=lifespan,
# docs_url=None, redoc_url=None 을 주면 기본 /docs, /redoc 페이지가 비활성화됩니다.
docs_url=None , redoc_url=None) # docs_url을 지정하는 커스텀 마이징할 때 (CSRF_TOKEN적용시)
# docs_url = None, redoc_url = "/swagger/redoc")
'''# 주소만 커스터마이징할 때 redoc_url = "/swagger/redoc" 이렇게 하면된다.
주소 뿐만 아니라 html 문서자체를 커스텀 마이징하는 경우는 views/swagger.py 의 함수를 사용하면 된다.
'''
including_router(app)
return app
II. root.py와 swagger.py생성
# Svelte_0.0.2/app/views/root.py
from fastapi import APIRouter, Request, Depends
router = APIRouter()
@router.get("/")
def get_root():
"""svelte 프론트엔드 단에서는 Home.svelte ("/") 으로 가게 변경함"""
return {"message": "Hello World"}
# Svelte_0.0.2/app/views/swagger.py
from fastapi import APIRouter, Request, Depends
from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html
router = APIRouter()
open_api_url = "/openapi.json"
@router.get("/docs", include_in_schema=False)
async def custom_docs_html():
"""여기에 html 문서자체를 커스텀 마이징하는 로직을 추가하면 된다.
CSRF_TOKEN을 주입하는 경우 등..."""
return get_swagger_ui_html(
openapi_url=open_api_url, # openapi 스펙 파일 URL
title="Custom API Docs",
)
@router.get("/redoc", include_in_schema=False)
async def custom_redoc_html():
"""여기에 html 문서자체를 커스텀 마이징하는 로직을 추가하면 된다."""
return get_redoc_html(
openapi_url=open_api_url, # 스펙 파일 경로
title="Custom ReDoc", # 페이지 제목
redoc_favicon_url="https://fastapi.tiangolo.com/img/favicon.png",
)'FastAPI' 카테고리의 다른 글
| User model 생성 및 첫 DB migrations (0) | 2025.11.06 |
|---|---|
| DB 서버와 Redis 서버 설정 및 연결/프론트엔드 렌더링 (0) | 2025.11.05 |
| 앱 개발을 위한 설정파일 만들기 (0) | 2025.11.05 |
| FastAPI 백엔드 개발 순서(Google AI Mode) (0) | 2025.11.05 |
| FastAPI+Svelte 시작 (0) | 2025.11.04 |