Files
nanocode/personal-blog/backend/app.py
T
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

79 lines
1.9 KiB
Python

"""
个人博客后端 - FastAPI
"""
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
import os
from database import engine, Base
from routers import auth, posts, categories, tags, images, settings, crawl, wechat_crawl, universal_crawl
# 创建数据库表
Base.metadata.create_all(bind=engine)
# 初始化默认管理员
from database import SessionLocal
from routers.auth import init_admin
db = SessionLocal()
init_admin(db)
db.close()
app = FastAPI(
title="Personal Blog API",
description="个人博客后端API",
version="1.0.0",
redirect_slashes=False
)
# CORS配置 - 允许远程访问
app.add_middleware(
CORSMiddleware,
allow_origins=[
"http://localhost:5173",
"http://localhost:3000",
"http://127.0.0.1:5173",
"http://0.0.0.0:5173",
"http://129.211.173.87:8888", # blog 前端
"http://129.211.173.87:9000", # SSO 中心
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# 注册路由
app.include_router(auth.router)
app.include_router(posts.router)
app.include_router(categories.router)
app.include_router(tags.router)
app.include_router(images.router)
app.include_router(settings.router)
app.include_router(crawl.router)
app.include_router(wechat_crawl.router)
app.include_router(universal_crawl.router)
# 静态文件服务(图片访问)
uploads_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), "uploads")
os.makedirs(uploads_dir, exist_ok=True)
app.mount("/uploads", StaticFiles(directory=uploads_dir), name="uploads")
@app.get("/")
def root():
return {
"message": "Personal Blog API",
"version": "1.0.0",
"docs": "/docs"
}
@app.get("/api/health")
def health_check():
return {"status": "ok"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8888)