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