第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何控制 gin 1.4.0+ 中缺少 URL 參數(shù)的行為?

如何控制 gin 1.4.0+ 中缺少 URL 參數(shù)的行為?

Go
www說 2022-04-26 19:42:53
我正在從1.3.0to 1.4.0(or 1.5.0) 遷移,我發(fā)現(xiàn)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引入1.5.0func 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)    }}但這404在調(diào)用時也會失敗(帶有 )。
查看完整描述

1 回答

?
猛跑小豬

TA貢獻1858條經(jīng)驗 獲得超8個贊

我發(fā)現(xiàn)問題是cleanPath()具有以下文檔的內(nèi)部函數(shù):

... 迭代應用以下規(guī)則,直到無法進行進一步處理:

  1. 用一個斜杠替換多個斜杠。

參考

如果您在 Github 上簽出最新的 master 分支,則會有一個名為RemoveExtraSlash的配置,默認情況下為 false。RemoveExtraSlash默認情況下不會在cleanPath()這里調(diào)用。

我可以看到這是在 11 月 28 日添加的,而最新的提交是1.5.0在 11 月 24 日。

你可以做的是從GitHub下載源代碼:

git clone https://github.com/gin-gonic/gin.git /home/user/projects/gin

然后在 go.mod 文件的末尾進行替換。當有新版本時,您可以刪除該行:

replace github.com/gin-gonic/gin => /home/user/projects/gin


查看完整回答
反對 回復 2022-04-26
  • 1 回答
  • 0 關(guān)注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號