亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

go/mux 中第一次匹配后停止匹配

go/mux 中第一次匹配后停止匹配

Go
海綿寶寶撒 2023-07-17 16:52:05
我有以下路由器:func testHttp() {    r := mux.NewRouter()    s := r.PathPrefix("/cmd").Subrouter()    s.HandleFunc("/{cmd}", cmd)    http.Handle("/", r)    http.ListenAndServe(":8090", nil)}當我發出這樣的請求時,localhost:8090/cmd/ls -lacmd 處理程序會正確執行。但是,如果我傳遞類似的內容,localhost:8090/cmd/ls -la /home/foo我會得到 404。這意味著 gorilla/mux 在檢測到 / 時保持匹配。那么如何配置它,以便特定匹配路徑(在本例中為 /cmd/)之后的所有內容都被視為該路徑的參數?想必我只能求助于使用 GET 參數,但是如果也使用 /rest-endpoint/params-having/ 也可以實現這一點嗎?
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

/ 是 URL 的目錄分隔符,因此 mux 所做的事情是正確的,它分隔和匹配由 / 分隔的段。如果要ls -la /home/foo作為路徑參數傳遞,則應轉義 / 字符,并寫入 %2F。然后 mux 將正確運行。

另一種選擇是將處理程序安裝到 PathPrefix /cmd/。然后,您必須在處理程序中解析路徑的剩余部分,但您可以按照您想要的方式處理“/”。


查看完整回答
反對 回復 2023-07-17
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號