- 系列目录
一、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还可以将占位符变量直接绑定到具体的对象中,同时还可以增加具体的验证,首先我们需要编写一个承载变量的结构体,在对应字段的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时,返回如下信息
后记
个人总结,欢迎转载、评论、批评指正