refactor: P6 API v1 版本化
- src/routes/v1.py:注册中心,148 条路由全部挂 /api/v1 - application/views/__init__.py:自动发现改为 register_v1 显式注册 - 登录白名单更新为 /api/v1/login 等(.env 与 .env.example) - build_full_url:内部调度调用自动加 /api/v1 前缀 【联动】ui/ 前端需将 API 调用前缀改为 /api/v1(随 ui/ 迁移处理) 【验收】148 路由全 /api/v1;白名单放行(/api/v1/login 表单校验); 鉴权拦截 401;build_full_url 验证;12 passed Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude
parent
4b0b28105c
commit
4d74b31431
@@ -102,36 +102,16 @@ _blueprint_modules = [
|
||||
|
||||
def register_blueprint(app):
|
||||
"""
|
||||
自动导入所有视图模块并注册蓝图到Flask应用实例
|
||||
注册 API v1 路由到 Flask 应用实例
|
||||
|
||||
功能说明:
|
||||
遍历 _blueprint_modules 列表,动态导入每个视图模块,
|
||||
自动发现模块中的 Blueprint 实例并注册到应用。
|
||||
此函数在应用启动时调用(通常位于 create_app 工厂函数中)。
|
||||
所有业务蓝图统一挂载到 /api/v1 前缀(见 src/routes/v1.py)。
|
||||
原自动发现机制已由 routes/v1.py 的显式注册取代。
|
||||
|
||||
Args:
|
||||
app: Flask应用实例
|
||||
|
||||
Returns:
|
||||
Flask: 注册完成后的Flask应用实例
|
||||
|
||||
Example:
|
||||
# 在应用工厂函数中调用
|
||||
def create_app():
|
||||
app = Flask(__name__)
|
||||
# ... 其他配置 ...
|
||||
register_blueprint(app)
|
||||
return app
|
||||
"""
|
||||
registered = set()
|
||||
for module_name in _blueprint_modules:
|
||||
mod = importlib.import_module(f'application.views.{module_name}')
|
||||
for attr_name in dir(mod):
|
||||
attr = getattr(mod, attr_name)
|
||||
if isinstance(attr, Blueprint):
|
||||
# 合并模块的 shim 会重复导出同一批 Blueprint,按名去重
|
||||
if attr.name in registered:
|
||||
continue
|
||||
app.register_blueprint(attr)
|
||||
registered.add(attr.name)
|
||||
return app
|
||||
from src.routes.v1 import register_v1
|
||||
return register_v1(app)
|
||||
|
||||
Reference in New Issue
Block a user