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")
}
相关推荐
@小博的博客3 小时前
【Linux探索学习】第二篇Linux的基本指令(2)——开启Linux学习第二篇
linux·运维·学习
007php0075 小时前
某大厂跳动面试:计算机网络相关问题解析与总结
java·开发语言·学习·计算机网络·mysql·面试·职场和发展
知识分享小能手5 小时前
微信小程序入门学习教程,从入门到精通,微信小程序核心 API 详解与案例(13)
前端·javascript·学习·react.js·微信小程序·小程序·vue
递归不收敛5 小时前
吴恩达机器学习课程(PyTorch 适配)学习笔记:3.3 推荐系统全面解析
pytorch·学习·机器学习
又是忙碌的一天8 小时前
前端学习 JavaScript(2)
前端·javascript·学习
蒙奇D索大8 小时前
【数据结构】考研数据结构核心考点:二叉排序树(BST)全方位详解与代码实现
数据结构·笔记·学习·考研·算法·改行学it
玲娜贝儿--努力学习买大鸡腿版8 小时前
推荐算法学习笔记(十九)阿里SIM 模型
笔记·学习·推荐算法
光影少年8 小时前
Flutter生态及学习路线
学习·flutter
尤利乌斯.X8 小时前
复杂网络仿真从入门到精通:0 学习路线
网络·学习·matlab·仿真·复杂网络
梦幻精灵_cq8 小时前
70行代码展现我的“毕生”编程能力
学习