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")
}

浙公网安备 33010602011771号