创建Gin引擎的方法有两种:

gin.Default()
gin.New()

gin.Default()和gin.New()的区别是,gin.Default是对gin.new()的封装,添加了logger和recovery的中间件,logger可以很方便的进行调试,recovery可以使用panic中断的恢复。

实现一个简单的请求

我们实现一个最简单的程序,请求并打印一个Hello Gin !

func main() {
	engine := gin.Default()             //创建引擎
	engine.GET("/hello", func(context *gin.Context) {    // 定义请求接口和处理匿名函数
		fmt.Println("请求路径:", context.FullPath())
		context.Writer.Write([]byte("Hello Gin!"))
	})
	if err := engine.Run(":8090"); err != nil {         //启动引擎,监听8090端口
		log.Print(err)
	}
}

我们再使用通用方法,再完善一个该请求。

func main(){}
engine := gin.Default()
	engine.Handle("GET", "/hello", func(context *gin.Context) {
		path := context.FullPath()
		fmt.Print(path)

		name := context.DefaultQuery("name", "hello")   // 如果没有name这个key,那么给name变量赋值为“hello”

    context.Writer.Write([]byte("hello " + name))
	})

	if err := engine.Run(); err != nil {
		fmt.Println(err)
	}
}

使用POST请求,处理body数据

// http://localhost/login   POST请求
	engine.Handle("POST", "login", func(context *gin.Context) {
		path := context.FullPath()
		fmt.Println(path)

		name := context.PostForm("name")
		pass := context.PostForm("pass")

		fmt.Println("name:", name, "pass:", pass)

		context.Writer.Write([]byte("name:" + name + "\npass:" + pass))
	})

// 使用GetPostForm获取数据
engine.POST("/user", func(context *gin.Context) {
		name, exist := context.GetPostForm("name")
		if exist {
			fmt.Println(name)
		}

		pass, exist := context.GetPostForm("pass")
		if exist {
			fmt.Println(pass)
		}

		context.Writer.Write([]byte("name:" + name + "\npass:" + pass))
	})

Delete方法

engine.DELETE("/user/:id", func(context *gin.Context) {
		UserID := context.Param("id")

		context.Writer.Write([]byte("delete:" + UserID))
	})