• tips: 如果用浏览器测试的时候呈现之前几篇博客编码的后果,能够删除一下cookie,或者关上无痕模式。

个别的路由能够这么写:

package mainimport (    "github.com/gin-gonic/gin"    "net/http")func main() {    r := gin.Default()    //拜访/index的GET申请,走这条路    r.GET("/index", func(c *gin.Context) {        c.JSON(http.StatusOK, gin.H{            "mathod": "GET",        })    })    r.POST("/index", func(c *gin.Context) {        c.JSON(http.StatusOK, gin.H{            "method": "POST",        })    })    r.DELETE("/index", func(c *gin.Context) {        c.JSON(http.StatusOK, gin.H{            "method": "DELETE",        })    })    r.PUT("/index", func(c *gin.Context) {        c.JSON(http.StatusOK, gin.H{            "method": "PUT",        })    })    //能够解决所有申请    r.Any("/index", func(c *gin.Context) {        switch c.Request.Method {        case http.MethodGet:            c.JSON(http.StatusOK, gin.H{"method": "GET"})        case http.MethodPost:            c.JSON(http.StatusOK, gin.H{"method": "POST"})        }        c.JSON(http.StatusOK, gin.H{            "method": "ANY",        })    })    r.NoRoute(func(c *gin.Context) {        c.JSON(http.StatusNotFound, gin.H{"msg": "there is no such site, you may interested in https://segmentfault.com/u/liberhome"})    })    r.Run(":9090")}

路由组能够这么写:

package mainimport (    "github.com/gin-gonic/gin"    "net/http")func main() {    r := gin.Default()    //把共有的前缀提出来    videoGroup := r.Group("/video")    {        videoGroup.GET("/index", func(c *gin.Context) {            c.JSON(http.StatusOK, gin.H{                "mathod": "GET",            })        })        videoGroup.POST("/index", func(c *gin.Context) {            c.JSON(http.StatusOK, gin.H{                "method": "POST",            })        })        videoGroup.DELETE("/index", func(c *gin.Context) {            c.JSON(http.StatusOK, gin.H{                "method": "DELETE",            })        })        videoGroup.PUT("/index", func(c *gin.Context) {            c.JSON(http.StatusOK, gin.H{                "method": "PUT",            })        })        //能够解决所有申请        videoGroup.Any("/index", func(c *gin.Context) {            switch c.Request.Method {            case http.MethodGet:                c.JSON(http.StatusOK, gin.H{"method": "GET"})            case http.MethodPost:                c.JSON(http.StatusOK, gin.H{"method": "POST"})            }            c.JSON(http.StatusOK, gin.H{                "method": "ANY",            })        })    }    r.Run(":9090")}

另外,路由组反对嵌套,在划分API层级or业务逻辑的时候罕用。


参考:bilibili