39 lines
984 B
Go
39 lines
984 B
Go
/*
|
|
* @Author : huangzj
|
|
* @Time : 2020/12/8 14:06
|
|
* @Description:直接绑定Uri参数
|
|
*/
|
|
|
|
package gin
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"testing"
|
|
)
|
|
|
|
type Person struct {
|
|
ID string `uri:"id" binding:"required,uuid"`
|
|
Name string `uri:"name" binding:"required"`
|
|
}
|
|
|
|
func TestBindUri(t *testing.T) {
|
|
route := gin.Default()
|
|
//这边的【:name】和【:id】说明了对应的该Uri,传入的参数分别是叫做name和id.在下面的Bind直接进行映射
|
|
route.GET("/uri/: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})
|
|
})
|
|
route.Run(":8088")
|
|
|
|
//请求示例
|
|
_ = `
|
|
这边可以看到uri后面的两个参数就是 name 和 id,直接不用声明名称.
|
|
$ curl -v localhost:8088/uri/thinkerou/987fbc97-4bed-5078-9f07-9141ba07c9f3
|
|
$ curl -v localhost:8088/uri/thinkerou/not-uuid
|
|
`
|
|
}
|