Golang Gin 框架参数解析介绍
Posted Data-Mining
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang Gin 框架参数解析介绍相关的知识,希望对你有一定的参考价值。
目录
-
前言
-
正文
- Query 参数解析
- Multipart/Urlencoded Form 参数解析
- query + post form 参数解析
- Map 参数解析
-
结尾
前言
Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。今天,我们就来详细看看 Gin 是如何进行参数解析的。
正文
Query 参数解析
在所有的请求中,Query 参数属于最常见的一种,下面通过一段代码来看一下,代码如下:
package main
import "github.com/gin-gonic/gin"
func main()
router := gin.Default()
router.GET("/welcome", func(c *gin.Context)
firstname := c.DefaultQuery("firstname", "Guest")
lastname := c.Query("lastname")
c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
)
router.Run(":8080")
上述 API 接口能够匹配类似如下请求的 URL:
/welcome?firstname=Jane&lastname=Doe
上述 Get 请求中,如果 Query 部分缺少参数 firstname,那么 firstname 的值将赋值为“Guest”;但是,如果缺少参数 lastname,那么 lastname 的值为空。
Multipart/Urlencoded Form 参数解析
在所有的请求中,还有 Multipart/Urlencoded Form 类型的参数,下面通过一段代码来理解一下,代码如下:
package main
import "github.com/gin-gonic/gin"
func main()
router := gin.Default()
router.POST("/form_post", func(c *gin.Context)
message := c.PostForm("message")
nick := c.DefaultPostForm("nick", "anonymous")
c.JSON(200, gin.H
"status": "posted",
"message": message,
"nick": nick,
)
)
router.Run(":8080")
上述 Post 请求中,如果 Body 部分缺少参数 nick,那么 nick 的值将赋值为“anonymous”;但是,如果缺少参数 message,那么 message 的值为空。
query + post form 参数解析
有些请求可能同时含有 query 参数和 post form 参数,比如:
POST /post?id=1234&page=1 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
name=manu&message=this_is_great
代码实例:
package main
import "github.com/gin-gonic/gin"
func main()
router := gin.Default()
router.POST("/post", func(c *gin.Context)
id := c.Query("id")
page := c.DefaultQuery("page", "0")
name := c.PostForm("name")
message := c.PostForm("message")
fmt.Printf("id: %s; page: %s; name: %s; message: %s", id, page, name, message)
)
router.Run(":8080")
由上面的例子可以看出,解析 Query 类型的参数时,使用的是 Query 方法和 DefaultQuery 方法;解析 post form 类型的参数时,使用的是 PostForm 方法。
Map 参数解析
请求参数中还有一种类型就是 Map 类型,请求实例如下:
POST /post?ids[a]=1234&ids[b]=hello HTTP/1.1
Content-Type: application/x-www-form-urlencoded
names[first]=thinkerou&names[second]=tianou
这种情况该如何解析呢?请看如下代码:
func main()
router := gin.Default()
router.POST("/post", func(c *gin.Context)
ids := c.QueryMap("ids")
names := c.PostFormMap("names")
fmt.Printf("ids: %v; names: %v", ids, names)
)
router.Run(":8080")
打印结果如下:
ids: map[b:hello a:1234], names: map[second:tianou first:thinkerou]
结尾
好啦,今天介绍了如何利用 Gin 框架解析四种不同参数请求的方法。希望对大家如何熟练使用 Gin 框架有所帮助。
作者简介:大家好,我是 liuzhen007(Data-Mining),是一位音视频技术爱好者,同时也是CSDN博客专家、华为云社区云享专家、签约作者,欢迎关注我分享更多干货!
以上是关于Golang Gin 框架参数解析介绍的主要内容,如果未能解决你的问题,请参考以下文章