gin框架中HTTP请求和参数的解析
1. 方法一: 通用的处理方法---Handle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 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. 分类处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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" ) } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)