这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天.
路由的重定向
router的重定向非常的简单,就是把布置在主函数里的路由抽离出来,形成新的函数,就可以进行路由的重定向了
首先是主函数的代码
package main
import (
"TikTok/dao"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
initRouter(r)
r.Run(":8080")
}
初始化路由的代码
package main
import (
"TikTok/controller"
"github.com/gin-gonic/gin"
)
func initRouter(r *gin.Engine) {
apiRouter := r.Group("/douyin")
go apiRouter.GET("/user/", controller.UserInfo)
go apiRouter.POST("/user/register/", controller.Register)
go apiRouter.POST("/user/login/", controller.Login)
}
运用表单传输数据
表单传输为post请求,http常见的传输格式为四种:
- application/json
- application/x-www-form-urlencoded
- application/xml
- multipart/form-data
- 表单参数可以通过PostForm()方法获取,该方法默认解析的是x-www-form-urlencoded或from-data格式的参数
中间件
Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。
定义中间件
func Auth() gin.HandlerFunc {
return func(context *gin.Context) {
context.Set("userId", 998244353)
context.Next()
}
}
为全局路由设置中间件
Gin中的中间件必须是一个gin.HandlerFunc类型。Gin允许设置多个中间件
package main
import (
"TikTok/controller"
"github.com/gin-gonic/gin"
)
func initRouter(r *gin.Engine) {
r.Use(Auth())
apiRouter := r.Group("/douyin")
go apiRouter.GET("/user/", controller.UserInfo)
go apiRouter.POST("/user/register/", controller.Register)
go apiRouter.POST("/user/login/", controller.Login)
}
为单个路由设置中间件
package main
import (
"TikTok/controller"
"github.com/gin-gonic/gin"
)
func initRouter(r *gin.Engine) {
//r.Use(Auth())
apiRouter := r.Group("/douyin")
go apiRouter.GET("/user/",Auth(), controller.UserInfo)
go apiRouter.POST("/user/register/", controller.Register)
go apiRouter.POST("/user/login/", controller.Login)
}
gin.Default()默认使用了Logger和Recovery中间件,其中:Logger中间件将日志写入gin.DefaultWriter,即使配置了GIN_MODE=release。
Recovery中间件会recover任何panic。如果有panic的话,会写入500响应码。如果不想使用上面两个默认的中间件,可以使用gin.New()新建一个没有任何默认中间件的路由。