官方文档:https://godoc.org/github.com/gin-gonic/gin
官方地址:https://github.com/gin-gonic/gin
go get github.com/gin-gonic/gin
//导入包
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")
}
效果:
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")
}
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()
}
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
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()
}