我正在嘗試使用 Gorilla mux 路由器來(lái)處理響應(yīng) URL 中有限字符串列表的路徑。我正在開(kāi)發(fā)的服務(wù)將從調(diào)用者那里獲取文件,并通過(guò)“適配器”將它們發(fā)送到 S3 或 OneDrive,具體取決于 URL 中指定的“適配器”。我還需要一個(gè)名為“schema”的變量,我現(xiàn)在只提到它是因?yàn)楹竺娴钠婀种?。我的測(cè)試如下({schema} 將設(shè)置為“test”):router.HandleFunc("/{adapter:(s3|onedrive)}/{schema:[a-z]+}/check",func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(fmt.Sprintf(`{"a":"%s","s":"%s"}`, mux.Vars(r)["adapter"], mux.Vars(r)["schema"])))}).Methods("GET")我預(yù)計(jì)會(huì)/s3/test/check會(huì)產(chǎn)生{"a":"s3","s":"test"},就像去/onedrive/test/check應(yīng)該得到{"a":"onedrive","s":"test"}......不過(guò)在這些情況下,我正在{"a":"s3","s":"s3"}和{"a":"onedrive","s":"onedrive"}分別。該(s3|onedrive)檢查似乎是強(qiáng)制執(zhí)行的,因?yàn)槔?,嘗試/dropbox/test/check正確訪問(wèn)會(huì)產(chǎn)生 404。為什么{schema}變量獲取變量的值,{adapter}我該如何解決這個(gè)問(wèn)題?
1 回答

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
我認(rèn)為這是因?yàn)槔ㄌ?hào)表示捕獲組和產(chǎn)量子匹配。它可以干擾大猩猩匹配器。不帶括號(hào)試試。
router.HandleFunc("/{adapter:s3|onedrive}/{schema:[a-z]+}/check",
- 1 回答
- 0 關(guān)注
- 174 瀏覽
添加回答
舉報(bào)
0/150
提交
取消