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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

Go
哈士奇WWW 2023-08-14 17:15:02
我正在努力從 遷移1.3.0到1.4.0(或1.5.0) 并且我發(fā)現(xiàn)1.3.0對(duì)于以下代碼片段router?:=?gin.New() router.GET("/func/:id/details",?func(c?*gin.Context)?{ ????value?:=?c.Param("id") ????fmt.Printf("value?is?%v\n",?value) })即使在請(qǐng)求時(shí)也總是會(huì)到達(dá)處理程序/func//details(注意缺少 URL?param),1.4.0而上面的內(nèi)容將返回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)用時(shí)也會(huì)失?。◣в校?。
查看完整描述

1 回答

?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

我發(fā)現(xiàn)問題出在內(nèi)部cleanPath()函數(shù)上,文檔如下:

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

  1. 將多個(gè)斜杠替換為單個(gè)斜杠。

如果你在 Github 上查看最新的 master 分支,就會(huì)發(fā)現(xiàn)有一個(gè)名為“RemoveExtraSlash”的配置,默認(rèn)情況下為 false。默認(rèn)情況RemoveExtraSlash下不會(huì)調(diào)用cleanPath()

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

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

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

然后在 go.mod 文件的末尾進(jìn)行替換。當(dāng)有新版本時(shí),您只需刪除該行:

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


查看完整回答
反對(duì) 回復(fù) 2023-08-14
  • 1 回答
  • 0 關(guān)注
  • 88 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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