结构体控制器,在有项目依赖的情况下主要配合Ioc来使用会非常便捷,结构体控制器需要将指定的结构体类型提前初始化到 Ioc中。

结构体方法注册

当前的结构体注册方式,首先定义一个结构体,提供一个结构体构造器,构造器类型如下所示,一个返回 接口的函数

type Constructor func() any

定义结构体

type Index struct {

}
// 定义一个 构造器
func NewIndex() web.Constructor {
    return func() any {
        return new(Index)
    }
}

// 定义一个接口
func (i *Index) Home()  {
    fmt.Println("Hme")
}

我们在自定义的服务器实例中把 准备好的结构体嵌套进去 ,修改上面的 Server 为以下

// Server 嵌套Aurora定义一个服务 实例
type Server struct {
    *aurora.Engine
    *Index
}

修改代码,通过 Server() 函数进行初始化操作

func (server *Server) Server() {
    // 进行一下初始化操作,比如 控制器实例,全局中间件,全局变量,第三方依赖库等操作
    // 将 Index 结构体的构造器 添加到配置项中,最后会被加载到ioc容器中
    server.Use(NewIndex())
}

func (server *Server) Router() {
    // 添加 web 路由

    server.Get("/", func() string {
        return "hello world"
    })

    // 开始注册 *Index 的路由 
    server.Get("/home",server.Home)
}
最后编辑: kuteng  文档更新时间: 2023-06-23 15:04   作者:kuteng