Become a sponsor

路由注册是将模块的 Handler 挂载到应用的过程。所有模块的路由在 src/api/v1/router.py 中统一注册。
src/api/v1/router.py
src/api/v1/{module}.py # 每个模块的路由定义在 src/api/v1/position.py 中定义 routes 列表:
# +======================================================================
# | 模块: 岗位路由层
# | 说明: 提供岗位管理的增删改查、批量删除、状态管理等 API 接口
# +======================================================================
"""岗位相关路由。"""
from modules.position.handlers import (
PositionAddHandler, PositionBatchDeleteHandler, PositionDeleteHandler,
PositionDetailHandler, PositionGetListHandler, PositionPageHandler,
PositionStatusHandler, PositionUpdateHandler,
)
routes = [
# 查询岗位分页数据
(r"/position/page", PositionPageHandler),
# 查询岗位详情
(r"/position/detail/(\d+)", PositionDetailHandler),
# 获取岗位下拉列表
(r"/position/getPositionList", PositionGetListHandler),
# 添加岗位
(r"/position/add", PositionAddHandler),
# 更新岗位
(r"/position/update", PositionUpdateHandler),
# 删除岗位
(r"/position/delete/(\d+)", PositionDeleteHandler),
# 设置岗位状态
(r"/position/status", PositionStatusHandler),
# 批量删除岗位
(r"/position/batchDelete", PositionBatchDeleteHandler),
]在 src/api/v1/router.py 的 _RESOURCE_MODULES 列表中追加模块:
# src/api/v1/router.py
from api.v1 import (auth, index, upload, user,
user_role, role, role_menu, menu,
dept, dict, dict_item, config,
config_item, level, position, city,
notice, link, category, article,
param, file_template, job, generator,
operation_log, login_log, job_log, example)
from api.v1 import position # 新增
_RESOURCE_MODULES = [
auth, index, upload, user,
# ... 已有模块 ...
position, # 新增
]注册规则
新模块只需两步:
src/api/v1/ 下创建路由文件,定义 routes 列表router.py 的 _RESOURCE_MODULES 中追加模块导入路由前缀 /api/v1 由 build_routes() 自动拼接,无需手动添加。
注册后,Position 模块的接口路径为:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/position/page | 分页查询 |
| GET | /api/v1/position/detail/(\d+) | 详情查询 |
| GET | /api/v1/position/getPositionList | 下拉列表 |
| POST | /api/v1/position/add | 新增 |
| PUT | /api/v1/position/update | 更新 |
| DELETE | /api/v1/position/delete/(\d+) | 单条删除 |
| POST | /api/v1/position/batchDelete | 批量删除 |
| PUT | /api/v1/position/status | 状态变更 |
| 规则 | 示例 |
|---|---|
| 使用小写英文 | /position 而非 /Position |
| 使用单数形式 | /position 而非 /positions |
| 多单词用驼峰 | /fileTemplate 或 /file-template |
| 路径参数用正则 | (\d+) 匹配数字 ID |
# src/api/v1/router.py
V1_PREFIX = "/api/v1"
def build_routes() -> list:
"""构建全部路由(含 /api/v1 前缀与健康检查)。"""
routes = []
for module in _RESOURCE_MODULES:
routes.extend([(V1_PREFIX + path, handler) for path, handler in module.routes])
routes.append((V1_PREFIX + "/health", HealthHandler))
return routesbuild_routes() 遍历所有模块的 routes 列表,为每条路由拼接 /api/v1 前缀,最后追加健康检查端点。
路由注册采用声明式模式:每个模块在 src/api/v1/{module}.py 中定义 routes 列表,在 router.py 的 _RESOURCE_MODULES 中追加导入即可。路由前缀 /api/v1 自动拼接,无需手动配置。