-
运行服务
路由实例监听端口运行服务
====================================================================
在 java spring 框架中,路由是通过注解的形式放在控制器上方的,java 中的注解比较强大,运行了 application 时候相当于 go 中注册了路由,并将路由绑定到了控制器,并进行了监听,要知道 go 中路由的写明和绑定控制器需要程序员自己去写明
我的博客系统中所有的路由都是放在一个 go 的路由文件中,并且 package 是 router,其中主要做的 5 项操作
创建路由实例
要知道 gin 框架底层使用的就是 httprouter,所以通过 gin 框架的 gin 包可以产生一个默认的路由实例
r := gin.Default()
静态资源加载
使用 Static 函数来加载前端的静态资源
前端模版加载
使用 LoadHTMLGlob 函数来家在前端 html 模版,之所以没有使用view/*
的形式,是因为 view 包下面的 html 模版依据博客系统的模块进行了分类
r.LoadHTMLGlob("view/**/*")
中间件的使用
在路由注册之前需要声明使用的中间件,这样在执行某个路由之前,就会先执行一下中间件的操作。这里使用的中间件是 session 的中间件,写法如下:
// UseSession session 中间件
func UseSession() gin.HandlerFunc {
store := cookie.NewStore([]byte("loginUser"))
return sessions.Sessions("loginUser", store)
}
中间件都需要返回gin.HandlerFunc
,然后在 router 中通过如下方式完成中间件的声明
r.Use(middleware.UseSession())
值得注意的是通过 GET 或者 POST 注册路由的函数中第二个参数的类型也是gin.HandlerFunc
,注册路由时候第二个参数一般填写的是 controller 的函数名。中间件声明之后在 controller 中即可通过如下方式来保存用户 session 了
// c *gin.Context,s Session
s := sessions.Default(c)
// 保存用户 session
s.Set("loginUser", username)
路由注册
接下来我们来做 GET/POST 路由注册,依据 restful 规范,我们划分了一下模块,主要注册了以下几大类的路由
-
首页路由
-
注册页路由
-
登录页路由
-
文章相关页面路由
-
关于我页面路由
注册路由中传递的参数是路由名称和路由需要绑定的 controller 函数名,值得注意的是 controller 函数名是属于gin.HandlerFunc
类型。最后 InitRouter 函数返回*gin.Context
类型路由,供 main 函数调用
===============================================================