gin 获取参数 | 青训营笔记

118 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

1: 获取querystring参数

querystring 指的是URL中 ? 后面携带的参数,例如:/user/search?username=小王子&address=沙河。获取请求的querystring参数的方法如下:

func main() {
	//Default返回一个默认的路由引擎
	r := gin.Default()
	r.GET("/user/search", func(c *gin.Context) {
        // 可以添加默认值
		username := c.DefaultQuery("username", "小王子")
		//username := c.Query("username")
		address := c.Query("address")
		//输出json结果给调用方
		c.JSON(http.StatusOK, gin.H{
			"message":  "ok",
			"username": username,
			"address":  address,
		})
	})
	r.Run()
}

我们输入对应的URL,就能获取到对应的参数了

http://localhost:8080/web?username=小王子&address=沙河

2: 获取form参数

请求的数据通过form表单来提交,例如向 /user/search 发送一个POST请求,获取请求数据的方式如下:

[!note]+ postman 如何提交表单 image.png|700

func main() {
	//Default返回一个默认的路由引擎
	r := gin.Default()
	r.POST("/user/search", func(c *gin.Context) {
		// DefaultPostForm取不到值时会返回指定的默认值
		//username := c.DefaultPostForm("username", "小王子")
		username := c.PostForm("username")
		address := c.PostForm("address")
		//输出json结果给调用方
		c.JSON(http.StatusOK, gin.H{
			"message":  "ok",
			"username": username,
			"address":  address,
		})
	})
	r.Run(":8080")
}
127.0.0.1:8080/user/search?username=小王子&address=沙河

3: 获取path参数

请求的参数通过URL路径传递,例如:/user/search/小王子/沙河。获取请求URL路径中的参数的方式如下。

func main() {
	//Default返回一个默认的路由引擎
	r := gin.Default()
	//💡带有":" 可以检测到
	r.GET("/user/search/:username/:address", func(c *gin.Context) {
		username := c.Param("username")
		address := c.Param("address")
		//输出json结果给调用方
		c.JSON(http.StatusOK, gin.H{
			"message":  "ok",
			"username": username,
			"address":  address,
		})
	})

	r.Run(":8080")
}
127.0.0.1:8080/user/search/小王子/沙河

[!note]+ 结果无序是正常的, 七米演示的也是无序的 image.png