安装
go get -u github.com/gin-gonic/gin
代码
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "pong",
})
})
r.Run(":8081")
}
使用get.post.put.等HTTP方法
func main() {
r := gin.Default()
r.POST("/xxxpost",add)
r.PUT("/xxxput")
}
func add(c *gin.Context) {
//c *gin.Context要传不然报错
}
路由分组
func main() {
//路由分组
router := gin.Default()
v1 := router.Group("/v1")
{
v1.GET("/login", loginEndPoint)
v1.GET("/submit", submitEndPoint)
}
v2 := router.Group("/v2")
{
v2.GET("login", loginEndPoint)
}
router.Run(":8082")
}
func loginEndPoint(c *gin.Context) {
c.JSON(200, gin.H{
"message": "login",
})
}
http://localhost:8082/v1/login
带参数的url
func main() {
//路由分组
router := gin.Default()
v1 := router.Group("/v1")
{
v1.GET("/login", loginEndPoint)
v1.GET("/submit", submitEndPoint)
}
router.GET("/user/:name/:action/", func(c *gin.Context) {
name := c.Param("name")
action := c.Param("action")
c.String(http.StatusOK, "%s is %s", name, action)
})
router.Run(":8082")
}
http://localhost:8082/user/zhangsan/jump/
如果是router.GET(“/user/:name/:action/”, func(c *gin.Context) {}),你在action后还加参数会找不到
但是如果是如果是router.GET(“/user/:name/:action/ff”, func(c *gin.Context) {}),地址栏就要带上这个action后的值,写ff就带ff,写abc就带abc,看你加了什么字符串
如果是如果是router.GET(“/user/:name/*action”, func(c *gin.Context) {}),name后的字符串全截取到
router.GET("/user/:name/*action", func(c *gin.Context) {
name := c.Param("name")
action := c.Param("action")
c.String(http.StatusOK, "%s is %s", name, action)
})
绑定url参数
在这里插入代码片func main() {
type Params struct {
Id int `uri:"id" binding:"required"`
Name string `uri:"name" bindind:"required"`
}
r := gin.Default()
r.GET("/user/:name/:id", func(c *gin.Context) {
var Person Params
var err = c.ShouldBindUri(&Person)
if err != nil {
c.JSON(200, gin.H{
"err": err,
})
return
}
c.JSON(200, gin.H{
"name": Person.Name,
"id": Person.Id,
})
})
r.Run(":8082")
}
接收get参数
//localhost:8082/post?id=2&name=
//DefaultQuery传空值就显示空值而不是默认值,不传才显示默认值;DefaultPostForm传空值会显示默认值
id := c.DefaultQuery("id", "12")
name := c.Query("name")
接收post参数
age := c.PostForm("age")
pos := c.DefaultPostForm("pos", "老师")