Gin路由组
文章目录
- Gin路由组
- 接收任意请求的路由
- 接收没有被定义的路由
- 路由组
- 完整代码
接收任意请求的路由
-
区别于以往的
GET()
函数只能处理一种请求,Any()
函数可以处理各种函数 -
语法:
func (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc){}
-
案例:
//可以接收任意请求的函数r.Any("/index", func(c *gin.Context) {switch c.Request.Method { case http.MethodGet:c.JSON(http.StatusOK, gin.H{"status": "Get",})case http.MethodPost:c.JSON(http.StatusOK, gin.H{"status": "Post",})}})
接收没有被定义的路由
-
用于处理各种没有被定义的路由
-
语法:
func (engine *Engine) NoRoute(handlers ...HandlerFunc) {}
-
案例:
//用于处理各种没有定义的路由被用户访问后显示的内容r.NoRoute(func(c *gin.Context) {c.HTML(http.StatusOK, "Not.html", gin.H{"email": "2585295809@qq.com",})})
路由组
-
顾名思义,所谓路由组指的就是路由的组,也就是可以对路由进行分组管理的用法
-
语法:
func (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup {}
-
案例:
//路由组(方便管理同一组的各种请求indexGroup := r.Group("/index"){// index/nameindexGroup.GET("/name", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "name ok",})})// index/ageindexGroup.POST("/age", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "age ok",})})}
-
路由组嵌套(也就是在路由组中在添加一个路由组)
-
案例:
//路由组(方便管理同一组的各种请求indexGroup := r.Group("/index"){// index/nameindexGroup.GET("/name", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "name ok",})})// index/ageindexGroup.POST("/age", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "age ok",})})//嵌套路由组ageGroup := indexGroup.Group("/age"){// /index/age/dogageGroup.GET("/dog", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "dog ok",})})}}
完整代码
package mainimport ("github.com/gin-gonic/gin""log""net/http"
)func main() {r := gin.Default()//解析静态文件r.LoadHTMLFiles("Not.html")//可以接收任意请求的函数r.Any("/index", func(c *gin.Context) {switch c.Request.Method {case http.MethodGet:c.JSON(http.StatusOK, gin.H{"status": "Get",})case http.MethodPost:c.JSON(http.StatusOK, gin.H{"status": "Post",})}})//用于处理各种没有定义的路由被用户访问后显示的内容r.NoRoute(func(c *gin.Context) {c.HTML(http.StatusOK, "Not.html", gin.H{"email": "2585295809@qq.com",})})//路由组(方便管理同一组的各种请求indexGroup := r.Group("/index"){// index/nameindexGroup.GET("/name", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "name ok",})})// index/ageindexGroup.POST("/age", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "age ok",})})//嵌套路由组ageGroup := indexGroup.Group("/age"){// /index/age/dogageGroup.GET("/dog", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "dog ok",})})}}err := r.Run(":8080")if err != nil {log.Println(err)return}
}