Gin路由组
文章目录
接收任意请求的路由
-
区别于以往的
GET()
函数只能处理一种请求,Any()
函数可以处理各种函数 -
语法:
func (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc){}
-
案例:
go//可以接收任意请求的函数 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) {}
-
案例:
go//用于处理各种没有定义的路由被用户访问后显示的内容 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 {}
-
案例:
go//路由组(方便管理同一组的各种请求 indexGroup := r.Group("/index") { // index/name indexGroup.GET("/name", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "status": "name ok", }) }) // index/age indexGroup.POST("/age", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "status": "age ok", }) }) }
-
路由组嵌套(也就是在路由组中在添加一个路由组)
-
案例:
go//路由组(方便管理同一组的各种请求 indexGroup := r.Group("/index") { // index/name indexGroup.GET("/name", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "status": "name ok", }) }) // index/age indexGroup.POST("/age", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "status": "age ok", }) }) //嵌套路由组 ageGroup := indexGroup.Group("/age") { // /index/age/dog ageGroup.GET("/dog", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "status": "dog ok", }) }) } }
完整代码
go
package main
import (
"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/name
indexGroup.GET("/name", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"status": "name ok",
})
})
// index/age
indexGroup.POST("/age", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"status": "age ok",
})
})
//嵌套路由组
ageGroup := indexGroup.Group("/age")
{
// /index/age/dog
ageGroup.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
}
}