customs-data / apps /api /main.py
3v324v23's picture
feat: 完成多国家海关数据源接入与核心功能全量迭代
8ca8917
Raw
History Blame Contribute Delete
1.6 kB
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from packages.core.logger import app_logger
# 我们将之前写好的 trade 接口引入
from apps.api.routers import trade, entity, export, subscription, bi
@asynccontextmanager
async def lifespan(app: FastAPI):
# 启动时初始化
app_logger.info("Initializing API Service...")
yield
# 关闭时
app_logger.info("Closing API Service...")
app = FastAPI(
title="Customs Data API",
description="海关数据查询服务 API",
version="1.0.0",
lifespan=lifespan
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# 挂载静态文件
app.mount("/static", StaticFiles(directory="apps/api/static"), name="static")
@app.get("/", tags=["UI"])
async def serve_ui():
return FileResponse("apps/api/static/index.html")
@app.get("/api/v1/health", tags=["System"])
async def health_check():
return {"status": "ok", "service": "Customs Data API"}
app.include_router(trade.router, prefix="/api/v1/trade", tags=["Trade Search"])
app.include_router(entity.router, prefix="/api/v1/entity", tags=["Entity Search"])
app.include_router(export.router, prefix="/api/v1/export", tags=["Export"])
app.include_router(subscription.router, prefix="/api/v1/subscription", tags=["Subscription"])
app.include_router(bi.router, prefix="/api/v1/bi", tags=["BI Dashboard"])