gin系列- 路由及路由组

路由及路由组

package main

import (
	"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{
			"method": "GET",
		})
	})
	//创建某个信息
	r.POST("/index", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"method": "POST",
		})
	})
	//更新某个信息
	r.PUT("/index", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"method": "PUT",
		})
	})
	//删除某个信息
	r.DELETE("/index", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"method": "DELETE",
		})
	})
	//处理所有的请求方法
	r.Any("/user", func(c *gin.Context) {
		switch c.Request.Method{
		case "GET" :
			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",
		})
	})

	//没有路由的页面
	//为没有配置处理函数的路由添加处理程序,默认情况下它返回404代码
	r.NoRoute(func(c *gin.Context) {
		c.JSON(http.StatusNotFound, gin.H{
			"msg" : "zisefeizhu",
		})
	})


	//路由组  多用于区分不同的业务线或APP版本
	//将拥有共同URL前缀的路由划分为一个路由组。习惯性一对{}包裹同组的路由,这只是为了看着清晰,你用不用{}包裹功能上没什么区别
	//视频的首页和详细页
	//r.GET("/video/index", func(c *gin.Context) {
	//	c.JSON(http.StatusOK, gin.H{"msg":"/video/index"})
	//})
	//商城的首页和详细页
	r.GET("/shop/index", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{"msg":"/shop/index"})
	})
	//路由组
	//把公用的前缀提取出来,创建一个路由组
	videoGroup := r.Group("/video")
	{
		videoGroup.GET("/index", func(c *gin.Context) {
			c.JSON(http.StatusOK, gin.H{"msg":"/video/index"})
		})
		videoGroup.GET("/xx", func(c *gin.Context) {
			c.JSON(http.StatusOK, gin.H{"msg":"/video/xx"})
		})
		videoGroup.GET("/oo", func(c *gin.Context) {
			c.JSON(http.StatusOK, gin.H{"msg":"/video/oo"})
		})
	}


	r.Run(":9090")
}

没有路由

路由组

posted @ 2020-04-20 17:40  紫色飞猪  阅读(1865)  评论(0编辑  收藏  举报