IRIS路由注册(接路由底层分析)

IRIS路由注册

实例化完Application对象,接着就是路由注册了。也就是类似下面的代码

 

 看看api.Get 实现

我们主要看app.Get("/home", HomeHandler)这个函数的实现。进入该Get函数的源码,发现调用者是APIBuilder结构体,如下:

这是因为在Application结构体中嵌套了router.APIBuilder结构体,所以Application自然也就嵌套了APIBuilder结构体的所有方法。

Get的这个方法中,我们看第二个参数handlers的类型是context.Handler,其定义如下是 type Handler func(*Context),这就是为什么我们把HomeHandler定义这种类型的原因。本质上也可以说没有为什么,就是iris框架这么规定的。我们再接着源代码往下看,会看到如下代码,根据请求的方法、路径以及请求处理函数创建一个路由对象,然后将该路由对象加入到APIBuilder的路由表routes中。

 

路由分组

  对路由进行分组也是在路由注册时常用的路由注册方法。在iris中使用以下代码对路由进行分组:

 这里通过使用app.Party方法对路由进行了分组。Party的方法如下

 实际上也是APIBuilder的一个方法。app中的APIBuilder创建了一个子APIBuilder对象,同时给子APIBuilder中的relativePath设置成了 "/admin"。也就是通过该子APIBuilder对象注册的路由,路径都是相对于relativePath的,即 "/admin"设置的,具体的关系图如下

 

posted @ 2023-09-04 18:02  lisus2000  阅读(17)  评论(0编辑  收藏  举报