我正在努力从1.3.0
迁移到1.4.0
(或1.5.0
),并且发现以下代码段的1.3.0
:>
router := gin.New()
router.GET("/func/:id/details", func(c *gin.Context) {
value := c.Param("id")
fmt.Printf("value is %v\n", value)
})
即使请求/func//details
(注意缺少URL param
),也总是会到达处理程序,而1.4.0
及更高版本将返回404
。
是否可以控制此行为? (以与1.3.0
中相同的方式工作?)
我尝试使用BindUri
中引入的BindUri
1.5.0
但是这在调用时也失败(func main() {
type Params struct {
ID string `uri:"id" binding:"required"`
}
router := gin.New()
router.GET("/func/:id/details", func(c *gin.Context) {
var pp Params
if err := c.BindUri(&pp); err != nil {
log.Errorf("failed binding: %v", err)
c.Status(http.StatusBadRequest)
return
}
log.Printf("params %+v\n", pp)
})
if err := router.Run("localhost:8080"); err != nil {
panic(err)
}
}
)。
我正在从1.3.0迁移到1.4.0(或1.5.0)的过程中,发现以下代码段路由器是1.3.0:= gin.New()router.GET(“ / func /:id / details“,func(c * gin.Context){value:= ...
由于Param是具有键值作为字符串的结构,请参见此处的文档404
。如果没有发送ID,则该值为空字符串。