2025-06-09 16:24:42 +09:00

80 lines
2.5 KiB
Python

#pp/main.py
from fastapi import FastAPI, Request, Depends
from fastapi.openapi.docs import get_swagger_ui_html
from fastapi.openapi.utils import get_openapi
from app.core.deps import get_current_user
from fastapi.middleware.cors import CORSMiddleware
from fastapi.security import OAuth2PasswordBearer
import traceback
from app.models import user, friend, character, homework
from app.api import user, auth, character, homework, character_homework, dashboard, friend
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/auth/login")
app = FastAPI(
title="숙제노기 API",
description="마비노기 모바일 숙제 관리용 백엔드 API",
version="0.1.0",
docs_url="/docs",
redoc_url=None,
openapi_url="/openapi.json",
root_path="/api"
)
# app = FastAPI(
# docs_url=None,
# redoc_url=None,
# openapi_url=None
# )
#
# @app.get("/docs", include_in_schema=False)
# def custom_docs(user=Depends(get_current_user)):
# return get_swagger_ui_html(openapi_url="/openapi.json", title="Sukjenogi API Docs")
#
# @app.get("/openapi.json", include_in_schema=False)
# def custom_openapi(user=Depends(get_current_user)):
# return get_openapi(
# title="Sukjenogi API",
# version="0.2",
# routes=app.routes
# )
@app.middleware("http")
async def log_exceptions_middleware(request: Request, call_next):
try:
response = await call_next(request)
return response
except Exception as exc:
print("❌ 전역 예외 발생:")
traceback.print_exc()
raise
origins = [
"https://sukjenogi.biryu2000.kr", # 프론트 도메인
"https://sukjenogi.com", # 프론트 도메인
"https://www.sukjenogi.com", # 프론트 도메인
]
app.add_middleware(
CORSMiddleware,
# allow_origins=origins,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(user.router, prefix="/users", tags=["Users"])
app.include_router(auth.router, prefix="/auth", tags=["Auth"])
app.include_router(character.router, prefix="/characters", tags=["Characters"])
app.include_router(homework.router, prefix="/homeworks", tags=["Homeworks"])
app.include_router(character_homework.router, prefix="/characterHomework", tags=["Character Homeworks"])
app.include_router(dashboard.router, prefix="/dashboard", tags=["Dashboard"])
app.include_router(friend.router, prefix="/friends", tags=["Friends"])
@app.get("/")
def read_root():
return {"message": "숙제노기 서버가 잘 작동 중입니다."}