Golang单页网站服务器

Golang single page website server

我正在尝试构建一些 spa/spw 以 golang 和 react-router 作为后端,但我遇到了一个小问题。

React-router 似乎基于这样的想法,即任何对服务器的 "bad" 请求(例如 /path/dynamicRessourceHash )都会向用户发送一个 .html 页面(说 html 页面然后从服务器导入 .js)然后 react-router 启动,分析路径并为应用程序提供在后台发出获取请求所需的信息并将资源交付给用户。

那么使用 std 中的 "net/http" 配置这样的服务器的标准方法是什么,也就是说,通常在预配置端点上的服务器资源,但将所有其他端点视为一个(或几) 路线 ?

举个例子(从今天开始我好像不善言辞)。假设用户在以下位置发出请求:

/route1/whatever/someotherstuff?... 等等,无论第二个“/”之后的内容是什么,我都希望用户由 /route1/ 的处理函数提供服务(注意,我不希望用户被重定向,因为这搞砸了 URL 和客户端路由)。

net/http 中,您可以使用处理程序将 / 路由提供给 return 404 页面,因为所有未知/未注册的路由都匹配 /.

http.HandleFunc("/", handler)

...

func handler(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/" {
       w.WriteHeader(http.StatusNotFound)
       // Write custom 404 Page to w.Write()
        return
    }
    // Handling for route /
}

您还可以使用支持 Not Found Handlers 的其他 http 多路复用器。

例如。

httprouter you set httprouter.Router.NotFound

gorilla/mux you set mix.Router.NotFoundHandler