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")
}
相关推荐
prog_61038 小时前
【笔记】思路分享:各种大模型免费当agent后台
笔记·大语言模型·agent·cursor
凯尔萨厮8 小时前
Maven(Windows下载安装)
笔记·maven
wdfk_prog8 小时前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
菩提小狗10 小时前
小迪安全2023-2024|第5天:基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载_笔记|web安全|渗透测试|
笔记·安全·web安全
Wentao Sun10 小时前
致敬软件创业者2026
笔记·程序人生
ZH154558913110 小时前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter
编程小白202611 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
学历真的很重要11 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程与线程(补充版)
学习·职场和发展·系统架构·系统架构师
深蓝海拓11 小时前
PySide6,QCoreApplication::aboutToQuit与QtQore.qAddPostRoutine:退出前后的清理工作
笔记·python·qt·学习·pyqt
酒鼎11 小时前
学习笔记(3)HTML5新特性(第2章)
笔记·学习·html5