config_routes.py
1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from __future__ import annotations
from flask import Blueprint, jsonify, request
from loguru import logger
from . import config_admin
config_bp = Blueprint("config", __name__, url_prefix="/api/config")
@config_bp.get("")
def get_config():
"""Expose selected configuration values to the frontend."""
try:
config_values = config_admin.read_config_values()
return jsonify({"success": True, "config": config_values})
except Exception as exc:
logger.exception("读取配置失败")
return jsonify({"success": False, "message": f"读取配置失败: {exc}"}), 500
@config_bp.post("")
def update_config():
"""Update configuration values and persist them to config storage."""
payload = request.get_json(silent=True) or {}
if not isinstance(payload, dict) or not payload:
return jsonify({"success": False, "message": "请求体不能为空"}), 400
updates = config_admin.filter_config_updates(payload, allowed_keys=config_admin.CONFIG_KEYS)
if not updates:
return jsonify({"success": False, "message": "没有可更新的配置项"}), 400
try:
config_admin.write_config_values(updates)
updated_config = config_admin.read_config_values()
return jsonify({"success": True, "config": updated_config})
except Exception as exc:
logger.exception("更新配置失败")
return jsonify({"success": False, "message": f"更新配置失败: {exc}"}), 500