gin框架中HTTP请求和参数的解析
1. 方法一: 通用的处理方法---Handle
package main import ( "fmt" "github.com/gin-gonic/gin" "log" ) func main() { router := gin.Default() router.Handle("GET","/hello", func(ctx *gin.Context) { fmt.Println(ctx.FullPath()) //name := ctx.Query("name") name := ctx.DefaultQuery("name", "默认值") fmt.Println("name =", name) ctx.Writer.Write([]byte("hello " + name)) }) // post: /login?name=zhangsna&pwd=123456 router.Handle("POST", "/login", func(ctx *gin.Context) { // 接收前端传递的json数据 /* 方法一 json := make(map[string]interface{}) ctx.BindJSON(&json) fmt.Println(json) */ // 方法二 var userLogin UserLogin ctx.Bind(&userLogin) fmt.Println(userLogin) fmt.Println(ctx.FullPath()) name := ctx.DefaultPostForm("name", "张三") pwd := ctx.DefaultPostForm("pwd", "789789") ctx.Writer.Write([]byte(name + ":" + pwd)) }) if err := router.Run(":8000"); err != nil { log.Fatalln(err.Error()) } } type UserLogin struct { Name string `json:"name"` Password string `json:"pwd"` }
2. 分类处理
package main import ( "fmt" "github.com/gin-gonic/gin" ) func Hello(ctx *gin.Context) { // GET请求 fmt.Println(ctx.FullPath(), ctx.ClientIP()) fmt.Println(ctx.Query("name")) ctx.Writer.Write([]byte("hello " + ctx.Query("name"))) } type Login struct { Name string `json:"name"` Password string `json:"pwd"` } func UserLogin(ctx *gin.Context) { // POST请求 fmt.Println(ctx.FullPath(), ctx.ClientIP()) var login Login ctx.BindJSON(&login) fmt.Println(login) ctx.Writer.Write([]byte(login.Name + ":" + login.Password)) } func UserDelete(ctx *gin.Context) { id := ctx.Param("id") fmt.Println("Param_id:", id) ctx.Writer.Write([]byte("delete user id:" + id)) } func main() { router := gin.Default() router.GET("/hello", Hello) router.POST("/login", UserLogin) router.DELETE("/user/:id", UserDelete) router.Run(":8000") }