79 lines
1.9 KiB
Python
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)
|