gin框架使用系列之二——uri占位符和占位符变量的获取

  • 系列目录
    • 《gin框架使用系列之一——快速启动和url分组》

一、url占位符介绍

  url占位符指的是在url中使用变量的方式,尤其是在Restful的url兴起以后,占位符的方式使用的更加的普遍,具体来说,就是在url中将数据的内容放入其中,而且这个内容还可以随着不同的数据的变化,如下是常用的带有url占位符的方式:

// 修改id为1的数据
PUT http://localhost:8080/user/1
// 删除id为2的数据
DELETE http://localhost:8080/user/2

二、gin中使用url的占位符

  在gin中,在url绑定的时候,用 :name 的方式来绑定占位符,如下所示

route.GET("/:name/:id", func(c *gin.Context))

三、单独获取占位符中的变量值

  在gin中,可以调用传入参数c的id := c.Param(“id”)的方式来获取对应的变量的值

	router.GET("/:name/:id", func(c *gin.Context) {
		id := c.Param("id")
		name := c.Param("name")

		c.JSON(http.StatusOK, gin.H{
			"id":   id,
			"name": name,
		})
	})

运行上面的代码,当我们在浏览器中输入http://localhost:8080/liming/123时,会得到取出来的变量信息:
gin框架使用系列之二——uri占位符和占位符变量的获取_第1张图片

三、用变量绑定的方式来获取占位符

gin还可以将占位符变量直接绑定到具体的对象中,同时还可以增加具体的验证,首先我们需要编写一个承载变量的结构体,在对应字段的tag中写上对应的转换信息

type Person struct {
	// uri后面是uri中变量的名称,binding是校验信息
	// 实例中id和name是必须的
	ID   string `uri:"id" binding:"required"`
	Name string `uri:"name" binding:"required"`
}

可以使用下面的方法将url注入到gin中

router.GET("/bind/:name/:id", func(c *gin.Context) {
		var person Person
		if err := c.ShouldBindUri(&person); err != nil {
			c.JSON(400, gin.H{"msg": err})
			return
		}
		c.JSON(200, gin.H{"name": person.Name, "uuid": person.ID})
	})

这个时候,当我们在浏览器输入http://localhost:8080/bind/liuming/123时,返回如下信息
gin框架使用系列之二——uri占位符和占位符变量的获取_第2张图片


后记
  个人总结,欢迎转载、评论、批评指正

你可能感兴趣的:(#,gin,gin,go)