package main
import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"net/http"
)
type PersonJson struct {
Age int `json:"age" binding:"required,gt=10"`
Address string `json:"addr" binding:"required"`
Name string `json:"name" binding:"required"`
}
type PersonForm struct {
Age int `form:"age" json:"age" binding:"required,gt=10"`
Address string `form:"addr" json:"addr" binding:"required"`
Name string `form:"name" json:"name" binding:"required"`
}
type PersonUri struct {
Age int `uri:"age" binding:"required,gt=10"`
Address string `uri:"addr" binding:"required"`
Name string `uri:"name" binding:"required"`
}
func main() {
r := gin.Default()
r.POST("/bind/json", testJson)
r.GET("/bind/query", testQuery)
r.POST("/bind/form", testFrom)
r.PUT("/bind/uri/:age/:name/:addr", testUri)
err := r.Run()
if err != nil {
panic(err)
}
}
func testJson(c *gin.Context) {
var person PersonJson
if err := c.ShouldBindJSON(&person); err == nil {
c.JSON(http.StatusOK, person)
} else {
c.String(http.StatusBadRequest, "person bing error: %v", err)
c.Abort()
return
}
}
func testQuery(c *gin.Context) {
var person PersonForm
if err := c.ShouldBindQuery(&person); err == nil {
c.JSON(http.StatusOK, person)
} else {
c.String(http.StatusBadRequest, "person bing error: %v", err)
c.Abort()
return
}
}
func testUri(c *gin.Context) {
var person PersonUri
if err := c.ShouldBindUri(&person); err == nil {
c.JSON(http.StatusOK, person)
} else {
c.String(http.StatusBadRequest, "person bing error: %v", err)
c.Abort()
return
}
}
func testFrom(c *gin.Context) {
var person PersonForm
if err := c.ShouldBindWith(&person, binding.Form); err == nil {
c.JSON(http.StatusOK, person)
} else {
c.String(http.StatusBadRequest, "person bing error: %v", err)
c.Abort()
return
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本