开源软件企业

简明优雅一步一步搞GOframe第六天 优化方法到controller

2024/3/22 0:37:03

目的 是把cmd 文件搞清爽


一 在controller文件夹下面再建立文件夹 比如newss,users

定义结构体 ,实例化 然后定义方法

回到 cmd.go

s.BindObject("/newss",newss.New())  #系统会自动批量绑定方法


二、分组路由 (把一些路由添加了一些前缀,和BindObject差不多,可以嵌套 比如 /group(/api) 可以嵌套 (/user)


usercontroller := user.New()
// 绑定user控制器中多个方法 s.BindObject("/user", usercontroller, "AddUser,UpdateUser") 
// 绑定单个方法 s.BindObjectMethod("/deluser", usercontroller, "DeleteUser")
然后再 controller 中注册方法


func (s *Server) BindHandler(pattern string, handler interface{})

func(request *ghttp.Request) 
func(ctx context.Context, BizRequest)(BizResponse, error)

在cmd中使用提前定义好的函数来进行注册  s.BindHandler("/world", handler)
三、搞完后结果

1 cmd.go

       s.Group("/", func(group *ghttp.RouterGroup) {
                group.Middleware(ghttp.MiddlewareHandlerResponse)
                group.Bind(
                // controller.NewsClass, // 首页
                // controller.Newss,     // 首页
                )
                // 权限控制路由
                group.Group("/news", func(group *ghttp.RouterGroup) {
                    // group.Middleware(service.Middleware().Auth)
                    group.Bind(
                        controller.NewsClass, // 首页
                        controller.Newss,     // 首页文件
                    )
                })
            })

2\contreller  (这里注意controller方法首字母要大写 路由才会识别)

	
package controller
import (
    "50cmsgo/internal/dao"
    "github.com/gogf/gf/v2/frame/g"
    "github.com/gogf/gf/v2/net/ghttp"
)
var NewsClass = cNewsClass{}
type cNewsClass struct{}
// 混编一体Classlist
func (c *cNewsClass) Class_list(r *ghttp.Request) {
    //  r.Response.Writeln("添加用户")
    md := dao.DboLClasss.Ctx(r.Context())
    classs, err := md.All()
    if err == nil {
        r.Response.WriteTpl("news/class_list.html", g.Map{
            "header": "This is header",
            "info":   classs,
        })
    }
}