Gin获取querystring参数的几种方式

Gin获取querystring参数的几种方式,第1张

参考资料:李文周的博客 - Gin框架介绍及使用
Bilibili链接:【最新Go Web开发教程】基于gin框架和gorm的web开发实战 (七米出品)

目录 Gin编写一个Gin实例方式1 - Query()方式2 - GetQuery()方式3 - DefaultQuery()

Gin

Gin是Golang最流行的Web框架,GitHub上有32K+ Star,是基于httprouter开发的简单易用的轻量级Web框架。
首先新建一个Go modules项目,在Environment中添加GOPROXY=http://goproxy.cn

新建项目完成之后,右键单击左侧的文件夹,选择“Open In”→“Terminal”在终端中打开,输入命令go get -u github.com/gin-gonic/gin下载并导入Gin的依赖。

在项目的go.mod文件中可以看到导入的依赖:

编写一个Gin实例

新建main.go文件,写入如下代码创建一个Gin实例:

package main

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

func main() {
	// 创建一个默认的路由引擎
	engine := gin.Default()

	engine.GET("/web", func(context *gin.Context) {
		// TODO 获取浏览器发送请求携带的querystring
	})

	err := engine.Run()    // 默认端口号为8080
	if err != nil {
		return
	}
}

Querystring指的是URL中?后面携带的参数。下面介绍获取querystring参数的几种方式。

方式1 - Query()

Query()的函数原型为func (c *Context) Query(key string) string,函数返回的字符串即为querystring。

name := context.Query("query")
context.JSON(http.StatusOK, gin.H{
	"name": name,
})
方式2 - GetQuery()

GetQuery()的函数原型为func (c *Context) GetQuery(key string) (string, bool),可以看出它与Query()的不同是它返回了querystring和一个布尔值,即如果没有成功获取到querystring,第二个返回值为false
实际上如果查看Query()的源码,我们可以发现Query()就是调用了GetQuery(),只是忽略了返回的布尔值。

func (c *Context) Query(key string) string {
	value, _ := c.GetQuery(key)
	return value
}

下面编写Gin实例。如果获取不到querystring,即okfalse时,就将querystring设置为somebody

name, ok := context.GetQuery("query")
if !ok {
	name = "somebody"
}
context.JSON(http.StatusOK, gin.H{
	"name": name,
})
方式3 - DefaultQuery()

DefaultQuery()的函数原型为func (c *Context) DefaultQuery(key string, defaultValue string) string,它有两个参数,当获取不到key作为querystring时,则采用defaultValue作为querystring。DefaultQuery()可以看作是简化版的GetQuery(),其源码如下:

func (c *Context) DefaultQuery(key, defaultValue string) string {
	if value, ok := c.GetQuery(key); ok {
		return value
	}
	return defaultValue
}

下面编写Gin实例。如果获取不到querystring,就将querystring设置为somebody(即设置defaultValue参数为somebody)。

name := context.DefaultQuery("query", "somebody")
context.JSON(http.StatusOK, gin.H{
	"name": name,
})

除此之外还有很多方法,在此不一一列举。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/996004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存