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")
}
相关推荐
小新同学^O^5 小时前
简单学习 --> 模型参数
学习·llm·大模型参数
cdbqss15 小时前
VB2026 菜单生成基类 BqGetMenuStrip
数据库·经验分享·学习·oracle·vb
智者知已应修善业5 小时前
【51单片机8位数码管动态显示日期小数点风格】2023-11-13
c++·经验分享·笔记·算法·51单片机
智者知已应修善业5 小时前
【51单片机有三个LED 分别第一个灯闪三下 再到第二个灯又闪三下 再到第三个灯又闪三下 就这样循环程序】2023-11-16
c++·经验分享·笔记·算法·51单片机
暴躁小师兄数据学院5 小时前
【AI大数据工程师特训笔记】第04讲:PostgreSQL 数据库内置函数详解
大数据·数据库·笔记·ai·语言模型
吃好睡好便好6 小时前
创建魔方矩阵和单位矩阵
开发语言·人工智能·学习·线性代数·matlab·矩阵
星夜夏空997 小时前
STM32单片机学习(21) —— I2C通信
stm32·单片机·学习
z落落8 小时前
C# 数组 最终完整版全套笔记(一维+多维+交错+引用类型+对象数组)
java·笔记·c#
searchforAI8 小时前
B站视频转笔记用哪个工具?2026年四款AI笔记工具对比实测
人工智能·经验分享·笔记·gpt·学习·视频总结·ai笔记
爱上好庆祝9 小时前
学习JS第十一天(JS的进阶)
前端·javascript·学习