You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.2 KiB
Python

from fastapi import FastAPI, Request
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from router import router
# 1. 创建 FastAPI 应用实例
app = FastAPI(
title="Annotation Tool API",
description="从 CherryPy 转换而来的标注工具 API",
version="2.0.0"
)
# 2. 设置 Jinja2 模板
# CherryPy 的 FileSystemLoader('./') 对应 FastAPI 的 directory="."
templates = Jinja2Templates(directory=".")
# 3. 挂载静态文件 (对应 server.conf)
# app.mount("路径", StaticFiles(directory="本地目录"), name="唯一名称")
app.mount("/static", StaticFiles(directory="public"), name="public")
# app.mount("/data", StaticFiles(directory="data"), name="data")
# app.mount("/temp", StaticFiles(directory="temp"), name="temp")
# app.mount("/views", StaticFiles(directory="views"), name="views")
# app.mount("/assets", StaticFiles(directory="assets"), name="assets")
# --- HTML 页面路由 ---
@app.get("/icon")
def icon(request: Request):
"""渲染测试图标页"""
return templates.TemplateResponse("test_icon.html", {"request": request})
@app.get("/ml")
def ml(request: Request):
"""渲染测试 ML 页"""
return templates.TemplateResponse("test_ml.html", {"request": request})
@app.get("/reg")
def reg(request: Request):
"""渲染注册演示页"""
return templates.TemplateResponse("registration_demo.html", {"request": request})
@app.get("/view/{file_path:path}")
def view(request: Request, file_path: str):
"""渲染查看页,:path 允许路径中包含斜杠"""
# 原始代码没有使用 file 参数,这里保持一致
return templates.TemplateResponse("view.html", {"request": request})
# --- API 接口路由 ---
@app.get("/")
def index(request: Request, scene: str = "", frame: str = ""):
"""渲染主页"""
return templates.TemplateResponse("index.html", {"request": request})
app.include_router(router)
# 6. 启动服务器 (对应 if __name__ == '__main__')
# 在命令行运行: uvicorn main:app --host 0.0.0.0 --port 8081 --reload
if __name__ == "__main__":
import uvicorn
print("Starting FastAPI server...")
# server.conf 中的 host 和 port 在这里配置
uvicorn.run(
app,
host="0.0.0.0",
port=8081
)