如何控制杜松子酒1.4.0+中缺少的URL参数的行为?

问题描述 投票:0回答:1

我正在努力从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:= ...

go url-routing httphandler gin-gonic
1个回答
0
投票

由于Param是具有键值作为字符串的结构,请参见此处的文档404。如果没有发送ID,则该值为空字符串。

© www.soinside.com 2019 - 2024. All rights reserved.