关键词:
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函数返回字符串。函数定义... 查看详情
go语言gin处理响应(代码片段)
本文介绍Gin框架处理响应数据,支持以字符串、json、xml、文件等格式响应请求。gin.Context上下文对象支持多种返回处理结果,下面分别介绍不同的响应方式。1.以字符串方式响应请求通过String函数返回字符串。函数定义... 查看详情
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框架提供了一种简单的方法来定义和使用中间件。中间件函数需要满足以下条件... 查看详情
go语言实战(14)gin+grpc微服务实现备忘录(上)|用户模块(代码片段)
写在前面介于很多同学让我出一下关于gRPC的内容,我就用gRPC把备忘录重新做一遍。源码地址:https://github.com/CocaineCong/gRPC-todoList1.安装部分1.1安装gRPCgogetgoogle.golang.org/grpcgogetgoogle.golang.org/protobuf1.2安装protoc可用于通讯协议... 查看详情