「这是我参与11月更文挑战的第15天,活动详情查看:2021最后一次更文挑战」
目录
- 前言
- 正文
+ Query 参数解析
+ Multipart/Urlencoded Form 参数解析
+ query + post form 参数解析
+ Map 参数解析
- 结尾
前言
Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。今天,我们就来详细看看 Gin 是如何进行参数解析的。
正文
Query 参数解析
在所有的请求中,Query 参数属于最常见的一种,下面通过一段代码来看一下,代码如下:
1 | go复制代码package main |
上述 API 接口能够匹配类似如下请求的 URL:
/welcome?firstname=Jane&lastname=Doe
上述 Get 请求中,如果 Query 部分缺少参数 firstname,那么 firstname 的值将赋值为“Guest”;但是,如果缺少参数 lastname,那么 lastname 的值为空。
Multipart/Urlencoded Form 参数解析
在所有的请求中,还有 Multipart/Urlencoded Form 类型的参数,下面通过一段代码来理解一下,代码如下:
1 | go复制代码package main |
上述 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
代码实例:
1 | go复制代码package main |
由上面的例子可以看出,解析 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
这种情况该如何解析呢?请看如下代码:
1 | go复制代码func main() { |
打印结果如下:
ids: map[b:hello a:1234], names: map[second:tianou first:thinkerou]
结尾
好啦,今天介绍了如何利用 Gin 框架解析四种不同参数请求的方法。希望对大家如何熟练使用 Gin 框架有所帮助。
作者简介:大家好,我是 liuzhen007,是一位音视频技术爱好者,同时也是CSDN博客专家、华为云社区云享专家、签约作者,欢迎关注我分享更多干货!
本文转载自: 掘金