官方文档:https://godoc.org/github.com/gin-gonic/gin
官方地址:https://github.com/gin-gonic/gin

1.开始安装

  1. 先配置好GOROOT和GOPATH
  2. 输入命令:go get github.com/gin-gonic/gin

2.简单示例

//导入包	
import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	//初始化引擎实例
	router:=gin.Default()
	//注册一个Get请求的方法
	router.GET("/", func(context *gin.Context) {
		context.String(http.StatusOK,"HelloWorld")
	})
	router.Run()//默认8080端口 自己指定例如: router.Run(":8888")
}

效果:

3.API示例

3.1.简单路由

func main() {
	//初始化引擎实例
	router:=gin.Default()
	//路由1
	//匹配/user/zhangsan 不匹配/user/zhangsan/user
	router.GET("/user/:name", func(context *gin.Context) {
		name:=context.Param("name")
		context.String(http.StatusOK,"you name is "+name)
	})
	//路由2
	router.GET("/user/:name/*action", func(c *gin.Context) {
	name := c.Param("name")
	action := c.Param("action")
	message := name + " is " + action
	c.String(http.StatusOK, message)
	})
	router.Run()
}

正确的路由1匹配:

错误的路由1匹配:

正确的路由2匹配:
在这里插入图片描述
PS:从上面3个图可以看出路由1和路由2的区别。路由1参数前是":"的是只匹配/后的内容,如果和比正确的路由多个参数,则无法正确匹配。路由2参数前是 " * "的将匹配 /及之后的参数

常用的请求方式:GET、POST、PUT、PATCH、DELETE、OPTIONS

func main() {
	router := gin.Default()
	router.GET("/someGet", getting)
	router.POST("/somePost", posting)
	router.PUT("/somePut", putting)
	router.DELETE("/someDelete", deleting)
	router.PATCH("/somePatch", patching)
	router.HEAD("/someHead", head)
	router.OPTIONS("/someOptions", options)
	router.Run()	//默认8080端口 自己指定例如: router.Run(":8888")
}

3.2.GET方式传参

func main() {
	router := gin.Default()
	// 我们常见的URL链接很多都是 www.xxx.com/xxx?参数1=值1&参数2=值2这样的形式
	// /welcome?firstname=Jane&lastname=Doe
	router.GET("/welcome", func(c *gin.Context) {
		//获取firstname参数,firstname参数不存在,则使用默认的值 也就是c.DefaultQuery的第二参数值
		firstname := c.DefaultQuery("firstname", "Guest")
		//获取lastname参数,不设置默认值
		lastname := c.Query("lastname")
		c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
	})
	router.Run()
}

效果:

3.3.POST方式传参

func main() {
	router := gin.Default()
	router.POST("/form_post", func(c *gin.Context) {
		//获取post参数
		message := c.PostForm("message")
		nick := c.DefaultPostForm("nick", "anonymous")
		c.JSON(200, gin.H{
			"status":  "ok",
			"message": message,
			"nick":    nick,
		})
	})
	router.Run(":8080")
}

PS:post请求不像get请求敲个地址就行,我们需要一些工具例如:postman
在这里插入图片描述
在这里插入图片描述

3.4.GET和POST方式结合传参

func main() {
	router := gin.Default()
	router.POST("/getAndpost", func(c *gin.Context) {
		id := c.Query("id")
		page := c.DefaultQuery("page", "0")
		name := c.PostForm("name")
		message := c.PostForm("message")
		fmt.Printf("Get方式:id: %s; page: %s; Post方式:name: %s; message: %s", id, page, name, message)
	})
	router.Run()
}

效果:
在这里插入图片描述
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐