You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mux.HandleFunc时请求/ws触发homePage的问题求助

Go ServeMux路由问题解答

一、mux.HandleFunc() 使用正确性

你使用mux.HandleFunc()注册路由的语法是正确的,该方法接收路由路径和符合func(http.ResponseWriter, *http.Request)签名的处理函数,你的代码完全符合这个要求。

二、请求/ws却执行homePage的原因及解决办法

出现这个问题的核心原因是**http.ServeMux的路由匹配规则**,以及可能的请求或代码运行问题:

可能的原因

  1. 实际请求路径带末尾斜杠:
    如果你实际请求的是http://localhost:8080/ws/(末尾有斜杠),但代码中注册的是/ws(无斜杠),此时没有完全匹配的路由,ServeMux会选择最长的匹配前缀/,从而执行homePage。
  2. 代码未重新编译运行:
    如果你修改代码添加/ws路由后,没有重新编译并运行新的程序,依然在运行旧版本(只有/路由),自然会触发homePage。
  3. 路由匹配的特殊情况:
    ServeMux采用最长前缀匹配规则,/ws的匹配优先级高于/,但如果上述两种情况存在,就会出现不符合预期的匹配结果。

解决办法

  • 确保请求路径正确:使用curl http://localhost:8080/ws(末尾无斜杠)进行测试。
  • 重新编译运行代码:执行go run main.go,确保修改后的代码被加载运行。
  • 兼容带斜杠的请求:如果需要支持/ws和/ws/两种路径,可以将路由注册为/ws/,此时ServeMux会自动将/ws的请求重定向到/ws/,并匹配到wsEndpoint:
    mux.HandleFunc("/ws/", wsEndpoint)
    

内容的提问来源于stack exchange,提问作者David Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:50:32