Gin 学习笔记03-参数绑定

参数绑定

1、ShouldBindJSON

go 复制代码
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

type User struct {
	Name   string `json:"name"`
	Gender string `json:"gender"`
	Age    int    `json:"age"`
}

func getUser(c *gin.Context) {
	var userInfo User
	err := c.ShouldBindJSON(&userInfo)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"message": "参数错误"})
		return
	}
	c.JSON(http.StatusOK, userInfo)
}

func main() {
	router := gin.Default()
	router.GET("/user", getUser)
	router.Run(":9090")
}

2、ShouldBindQuery

go 复制代码
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

type UserInfo struct {
	Name   string `json:"name" form:"name"`
	Gender string `json:"gender" form:"gender"`
	Age    string `json:"age" form:"age"`
}

func getUserInfo(c *gin.Context) {
	var userInfo UserInfo
	err := c.ShouldBindQuery(&userInfo)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"message": "参数有误"})
		return
	}
	c.JSON(http.StatusOK, userInfo)
}

func main() {
	router := gin.Default()
	router.POST("/user", getUserInfo)
	router.Run("9090")
}

3、ShouldBindUri

go 复制代码
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func bindUri(c *gin.Context) {
	type User struct {
		Name string `json:"name" uri:"name"`
		Age  int    `json:"age" uri:"age"`
	}

	var user User

	c.ShouldBindUri(&user)

	c.JSON(http.StatusOK, user)
}

func main() {
	router := gin.Default()

	router.GET("/uri/:name/:age", bindUri)

	router.Run(":9000")
}

4、ShouldBind

go 复制代码
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

type Students struct {
	Name   string `json:"name" form:"name"`
	Gender string `json:"gender" form:"gender"`
	Age    int    `json:"age" form:"age"`
}

func getStudent(c *gin.Context) {
	var userInfo Students
	err := c.ShouldBind(&userInfo)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"message": "参数错误"})
		return
	}
	c.JSON(http.StatusOK, userInfo)
}

func main() {
	router := gin.Default()
	router.GET("/user", getStudent)
	router.Run(":9000")
}
相关推荐
wq8973878 小时前
[AI问答] VFIO操作的相关函数学习
学习
Century_Dragon8 小时前
把一辆智能汽车“搬“进教室—智能网联汽车自动驾驶虚拟教学实训
学习
兔头?8 小时前
JVM学习文档
jvm·学习
hkNaruto8 小时前
【AI】深度学习、强化学习、深度强化学习基础概念笔记
人工智能·笔记·深度学习
无心水9 小时前
15、云原生架构设计理论与实践 核心考点与学习笔记
笔记·学习·云原生·架构师·软考·系统架构设计师·软考系统架构设计师
动词ing9 小时前
【学习笔记】51单片机 独立按键控制LED显示二进制
笔记·学习·51单片机
叼烟扛炮9 小时前
Linux 学习笔记(三十九):网络基石——TCP/IP 模型与 UDP 实战
linux·运维·网络·笔记·学习·tcp/ip
闲云野鹤在人间9 小时前
头秃修炼手册:StorageClass+StatefulSet+ETCD 全套渡劫笔记
linux·数据库·笔记·云原生·kubernetes·etcd
派大猩猩_9 小时前
选题散在 20 篇笔记里?Nutstore Sync在 Obsidian 里创建选题小工具,创作动线短一半
笔记·obsidian·obsidian插件·obsidian ai
前进的李工9 小时前
Agent 学习笔记 04:KV Cache 与上下文缓存
笔记·学习·缓存·agent·注意力机制·kv cache·prompt cache