深入剖析 Iris 路由分组的挂载方式
Iris 框架利用路由分组简化 RESTful API 的构建和管理。本文将详细解释 app.Party("/v1")
语句如何将路由分组挂载到主应用 app
上,并解答疑问:v1 := app.Party("/v1")
创建了一个路由分组,Party
方法返回一个 APIBuilder
对象 (即 v1
),并设置 v1.parent = app
,但 Party
方法并未显式关联 v1
到 app
,app
如何感知 v1
的存在?
关键在于 Iris 的路由树结构和 APIBuilder
的设计。app
本身就是一个 APIBuilder
实例,是整个应用路由的根节点。app.Party("/v1")
创建新的 APIBuilder
实例 v1
,并将其作为子节点挂载到 app
的路由树中。 这并非直接修改 app
属性,而是通过 v1.parent = app
建立父子关系,隐式定义了路由树结构。
当请求到达时,Iris 从根节点 app
开始遍历路由树,根据请求路径匹配节点。如果路径以 /v1
开头,Iris 进入子节点 v1
,继续匹配剩余路径。因此,app
通过路由树结构间接“感知”v1
的存在,将请求正确分发到 v1
中注册的路由处理器。v1.parent
属性用于路由处理过程中向上层(父节点)查询信息或执行操作,保证路由处理完整性。 这种设计巧妙利用树形结构,使路由管理和匹配更高效。 v1
的存在并非 app
直接引用感知,而是通过路由树结构和遍历算法实现。