go语言gin处理请求参数(代码片段)

jeikerxiao jeikerxiao     2022-12-26     603

关键词:

Go语言 Gin处理请求参数

1.获取Get 请求参数

获取Get请求参数的常用3个函数:

  • func (c *Context) Query(key string) string
  • func (c *Context) DefaultQuery(key, defaultValue string) string
  • func (c *Context) GetQuery(key string) (string, bool)

2.获取Post请求参数

获取Post请求参数的常用3个函数,与Get获取参数类似:

  • func (c *Context) PostForm(key string) string
  • func (c *Context) DefaultPostForm(key, defaultValue string) string
  • func (c *Context) GetPostForm(key string) (string, bool)

3.获取URL路径参数

获取URL路径参数,指的是获取 /user/:id 这类型路由绑定的参数,这个例子绑定了一个参数id。

获取url路径参数常用函数:

  • func (c *Context) Param(key string) string

4.将请求参数绑定到struct对象

前面获取参数的方式都是一个个参数的读取,实际应用中,Gin框架支持将请求参数自动绑定到一个struct对象,这种方式支持Get/Post请求,也支持http请求body内容为json/xml格式的参数。

示例

package main

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

/*
gin 获取请求参数
*/
func main() 
	// 1.初始化实例
	r := gin.Default()

	// 2.路由。localhost:8080/get?name=xiao
	r.GET("/get", func(c *gin.Context) 
		// 直接通过Query获取
		name := c.Query("name")
		c.JSON(http.StatusOK, gin.H
			"parms_name": name,
		)
	)
	// 1)正常取值:localhost:8080/title?title=xiao
	// 2) 无值,则取设置的默认值(default_title):localhost:8080/title
	r.GET("/title", func(c *gin.Context) 
		// 带默认值的参数获取
		title := c.DefaultQuery("title", "default_title")
		c.JSON(http.StatusOK, gin.H
			"title": title,
		)
	)
	// 1)返回参数判断是否有值
	// 2) 参数不存在:localhost:8080/value
	// 3) 参数存在: localhost:8080/value?value=xiao
	r.GET("/value", func(c *gin.Context) 
		value, ok := c.GetQuery("value")
		if !ok 
			// 如果参数不存在
			c.JSON(http.StatusOK, gin.H
				"message": "value not exist.",
			)
			return
		
		c.JSON(http.StatusOK, gin.H
			"value": value,
		)
	)
	// 1)post 默认,取参数值
	r.POST("/post", func(c *gin.Context) 
		// 直接获取post form参数值,为string类型
		name1 := c.PostForm("name")

		c.JSON(http.StatusOK, gin.H
			"name1": name1,
		)
	)
	// 2)post 带默认值,取参数值
	r.POST("/defaultPost", func(c *gin.Context) 
		// 设置默认值,获取参数
		name2 := c.DefaultPostForm("name", "default_name")

		c.JSON(http.StatusOK, gin.H
			"name2": name2,
		)
	)
	// 3)post 判断是否存在值,取参数值
	r.POST("/getPost", func(c *gin.Context) 
		// 判断参数是否在
		name3, ok := c.GetPostForm("name")
		if !ok 
			// 参数不存在
			c.JSON(http.StatusOK, gin.H
				"message": "name param not exist.",
			)
			return
		
		c.JSON(http.StatusOK, gin.H
			"name3": name3,
		)
	)
	// 获取请求url中的值
	r.GET("/user/:id", func(c *gin.Context) 
		// 获取请求url中的参数id
		id := c.Param("id")
		c.JSON(http.StatusOK, gin.H
			"id": id,
		)
	)
	// 绑定struct对象
	type User struct 
		Name string `json:"name" form:"name"`
		Age  int    `json:"age" form:"age"`
	
	// 绑定参数:localhost:8080/user
	/*
		
		    "name":"xi",
		    "age":18
		
	*/
	r.POST("/user", func(c *gin.Context) 
		// 初始化对象
		u := User
		// 通过 ShouldBind 函数,将请求参数绑定到 struct 对象。
		if c.ShouldBind(&u) == nil 
			// 绑定成功,输出请求参数
			c.JSON(http.StatusOK, gin.H
				"name": u.Name,
				"age":  u.Age,
			)
			return
		
		c.JSON(http.StatusOK, gin.H
			"message": "绑定失败",
		)
	)

	// 3.启动服务
	r.Run(":8080")

go语言gin处理响应(代码片段)

本文介绍Gin框架处理响应数据,支持以字符串、json、xml、文件等格式响应请求。gin.Context上下文对象支持多种返回处理结果,下面分别介绍不同的响应方式。1.以字符串方式响应请求通过String函数返回字符串。函数定义&#x... 查看详情

go语言gin处理响应(代码片段)

本文介绍Gin框架处理响应数据,支持以字符串、json、xml、文件等格式响应请求。gin.Context上下文对象支持多种返回处理结果,下面分别介绍不同的响应方式。1.以字符串方式响应请求通过String函数返回字符串。函数定义&#x... 查看详情

go语言(十三):使用go和gin开发restfulapi(下)

参考技术A当客户端在发出POST请求时/albums,您希望将请求正文中描述的专辑添加到现有专辑数据中。为此,您将编写以下内容:1、编写代码a.添加代码以将专辑数据添加到专辑列表。在此代码中:1)用于Context.BindJSON将请求正文... 查看详情

go语言之http(代码片段)

go语言http1、net/http包提供的http.ListenAndServe()方法,在指定的地址监听该方法用于在指定的TCP网络地址addr进行监听,然后调用服务端处理程序来处理传入的连接请求。该方法有两个参数:第一个参数addr即监听地址;第二个参数表... 查看详情

gogin学习记录1(代码片段)

...a;main.go,用来作为项目的入口文件。GET与POST请求参数处理在main.go中开始编写代码,框架的话就先从接收参数开始。packaget_ginimport( "github.com/gin-gonic/gin" "net/http")funcmain() r:=gin.Default() //Get参数 r.GET("/getTest&... 查看详情

从0开始的go+websocket构建五子棋对战系统(代码片段)

基本框架直接照搬,不多解释。dao为数据库处理层po为实体类middleware为中间件,cors处理跨域app对request请求进行封装router处理路由service为服务层,进行数据处理逻辑网络框架使用gin作为整体的网络框架,文档在这里https://github.com... 查看详情

gin框架系列01:极速上手(代码片段)

Gin是什么?Gin是Go语言编写的web框架,具备中间件、崩溃处理、JSON验证、内置渲染等多种功能。准备工作本系列演示所有代码都在Github中,感兴趣的同学可以自行查阅,欢迎大家一起完善。https://github.com/pingyeaa/golang-examples/tree/ma... 查看详情

[go]go语言gin框架实现管理员认证登陆接口(代码片段)

后台用户登录验证功能是很多项目的必须要有的逻辑,也是常见的技术需求.要实现这个逻辑首先要有数据库表结构如下:CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(50)NOTNULLDEFAULT‘‘,`password`varchar(50)NOTNULLDEFAULT‘‘,`nickname`var... 查看详情

03.go框架之gin框架从入门到熟悉(cookie和session,数据库操作)(代码片段)

...息发送给服务器,服务器收到请求后,就可以根据该信息处理请求Cookie由服务器 查看详情

go基础http编程(代码片段)

...1.2URL1.3协议版本1.4请求头1.5请求正文1.6httpresponse1.7https2.go语言http标准库3.httprouter4.请求校验5.http中间件6.GIN6.1路由6.2参数获取6.3利用postman提交http请求6.4生成response6.5参数检验6.6中间件6.7会话7.Beego1.http协议http:超文本传输协... 查看详情

gin内容介绍√(代码片段)

...例:RESTfulAPIGin渲染HTML渲染自定义模板函数静态文件处理使用模板继承补充文件路径处理JSON渲染XML渲染YMAL渲染protobuf渲染获取参数获取querystring参数获取form参数获取path参数参数绑定文件上传单个文件上传多 查看详情

gin内容介绍√(代码片段)

...例:RESTfulAPIGin渲染HTML渲染自定义模板函数静态文件处理使用模板继承补充文件路径处理JSON渲染XML渲染YMAL渲染protobuf渲染获取参数获取querystring参数获取form参数获取path参数参数绑定文件上传单个文件上传多 查看详情

gin接收参数和返回数据(代码片段)

目录返回JSON数据方式一方式二接收GET请求参数接收FORM表单参数获取url中的参数(restful风格)gin参数绑定返回JSON数据方式一用map作序列化packagemainimport( "github.com/gin-gonic/gin")funcmain() r:=gin.Default() r.GET("/json",func(c*gin. 查看详情

go开源宝藏web框架gin专场(含思维导图)|持续更新(代码片段)

写在前面本人只是一个Go语言的初学者,这篇总结只是把我平常经常用到的都总结起来而已。具体详细的内容建议到去GIN的中文文档查看。当然这篇文章也会持续更新,记录我的Web框架操练过程这篇文章也会持续更新哒思... 查看详情

go语言事件请求处理程序(eventhandler)

参考技术A在Go语言的代码中,您需要引入官方的SDK库aliyun/serverless/fc-runtime-go-sdk/fc,并实现handler函数和main函数。示例如下:传入的event参数是一个包含key属性的JSON字符串,示例如下。具体的示例解析如下:有效的EventHandler签名... 查看详情

golangtest_gin.go(代码片段)

查看详情

gin优雅打印请求与回包内容(代码片段)

...拦截HTTP请求和响应的机制。中间件函数可以在请求到达处理程序之前或之后执行某些操作,例如打印请求和响应的内容、验证请求数据等。Gin框架提供了一种简单的方法来定义和使用中间件。中间件函数需要满足以下条件&#x... 查看详情

go语言实战(14)gin+grpc微服务实现备忘录(上)|用户模块(代码片段)

写在前面介于很多同学让我出一下关于gRPC的内容,我就用gRPC把备忘录重新做一遍。源码地址:https://github.com/CocaineCong/gRPC-todoList1.安装部分1.1安装gRPCgogetgoogle.golang.org/grpcgogetgoogle.golang.org/protobuf1.2安装protoc可用于通讯协议... 查看详情