53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from flask import Flask, jsonify, send_from_directory
|
||
from flask_cors import CORS
|
||
import logging
|
||
import os
|
||
|
||
app = Flask(__name__)
|
||
|
||
# 配置静态文件目录为dist
|
||
# 说明:这里指向后端目录中的 dist(前端构建产物应复制或输出到此)
|
||
dist_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'dist'))
|
||
app.static_folder = dist_dir
|
||
|
||
# 为 SPA 提供静态文件与回退到 index.html 的路由
|
||
@app.route('/')
|
||
def serve_index():
|
||
# 返回构建后的前端入口文件
|
||
return send_from_directory(app.static_folder, 'index.html')
|
||
|
||
@app.route('/<path:path>')
|
||
def serve_static_or_fallback(path):
|
||
# 如果请求的文件存在则直接返回,否则回退到 index.html(用于前端路由)
|
||
file_path = os.path.join(app.static_folder, path)
|
||
if os.path.isfile(file_path):
|
||
return send_from_directory(app.static_folder, path)
|
||
return send_from_directory(app.static_folder, 'index.html')
|
||
|
||
CORS(app) # 允许跨域访问
|
||
|
||
# 配置日志
|
||
# 确保logs目录存在
|
||
logs_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'handlers', 'Rankings', 'logs')
|
||
os.makedirs(logs_dir, exist_ok=True)
|
||
|
||
logging.basicConfig(
|
||
level=logging.INFO,
|
||
format='%(asctime)s - %(levelname)s - %(message)s',
|
||
handlers=[
|
||
logging.FileHandler(os.path.join(logs_dir, 'app.log'), encoding='utf-8'),
|
||
logging.StreamHandler()
|
||
]
|
||
)
|
||
|
||
# 导入并注册蓝图
|
||
from routers.rank_api_routes import rank_bp
|
||
app.register_blueprint(rank_bp)
|
||
|
||
|
||
if __name__ == '__main__':
|
||
print("启动主程序服务...")
|
||
print("服务地址: http://localhost:8443")
|
||
|
||
app.run(host='0.0.0.0', port=8443, debug=True)
|