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
@@ -132,6 +132,9 @@ def build_full_url(url: str) -> str:
|
||||
|
||||
# 相对路径,拼接站点域名
|
||||
if url.startswith("/"):
|
||||
# 内部 API 调用统一挂到 /api/v1(P6 API 版本化)
|
||||
if not url.startswith("/api/"):
|
||||
url = f"/api/v1{url}"
|
||||
url = f"{FLASK_SITE_DOMAIN}{url}"
|
||||
|
||||
return url
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
"""路由注册中心包。"""
|
||||
@@ -0,0 +1,61 @@
|
||||
"""
|
||||
API v1 路由注册中心
|
||||
=============================================================
|
||||
|
||||
所有业务蓝图统一挂载到 /api/v1 前缀下:
|
||||
- 模块内蓝图保持各自的 url_prefix(如 /user、/role)
|
||||
- 整体前缀由 v1 父蓝图提供 → /api/v1/user/page 等
|
||||
|
||||
联动说明:
|
||||
- 登录白名单需改为 /api/v1/login 等(见 config/auth.py 与 .env)
|
||||
- 内部 HTTP 调用(定时任务)需追加 /api/v1
|
||||
"""
|
||||
|
||||
from flask import Blueprint
|
||||
|
||||
from src.modules.auth.router import login_blue, index_blue
|
||||
from src.modules.association.role_menu.router import role_menu_blue
|
||||
from src.modules.association.user_role.router import user_role_blue
|
||||
from src.modules.city.router import city_blue
|
||||
from src.modules.cms.article.router import article_blue
|
||||
from src.modules.cms.category.router import category_blue
|
||||
from src.modules.cms.link.router import link_blue
|
||||
from src.modules.configuration.router import config_blue, config_item_blue
|
||||
from src.modules.dictionary.router import dict_blue, dict_item_blue
|
||||
from src.modules.file_template.router import file_template_blue
|
||||
from src.modules.job.router import job_blue
|
||||
from src.modules.log.router import login_log_blue, operation_log_blue
|
||||
from src.modules.notice.router import notice_blue
|
||||
from src.modules.param.router import param_blue
|
||||
from src.modules.system.dept.router import dept_blue
|
||||
from src.modules.system.level.router import level_blue
|
||||
from src.modules.system.menu.router import menu_blue
|
||||
from src.modules.system.position.router import position_blue
|
||||
from src.modules.system.role.router import role_blue
|
||||
from src.modules.system.user.router import user_blue
|
||||
from src.modules.upload.router import upload_blue
|
||||
|
||||
# 全部业务蓝图(按领域分组排序)
|
||||
BLUEPRINTS = [
|
||||
login_blue, index_blue,
|
||||
user_blue, role_blue, menu_blue, dept_blue, position_blue, level_blue,
|
||||
user_role_blue, role_menu_blue,
|
||||
dict_blue, dict_item_blue, config_blue, config_item_blue,
|
||||
param_blue, notice_blue, category_blue, article_blue, link_blue,
|
||||
upload_blue, file_template_blue, login_log_blue, operation_log_blue,
|
||||
city_blue, job_blue,
|
||||
]
|
||||
|
||||
|
||||
def register_v1(app):
|
||||
"""
|
||||
注册 API v1 路由(所有业务蓝图挂载到 /api/v1)。
|
||||
|
||||
Args:
|
||||
app: Flask 应用实例
|
||||
"""
|
||||
v1 = Blueprint('v1', __name__, url_prefix='/api/v1')
|
||||
for blue in BLUEPRINTS:
|
||||
v1.register_blueprint(blue)
|
||||
app.register_blueprint(v1)
|
||||
return app
|
||||
Reference in New Issue
Block a user