gpt4 book ai didi

http - 使用 go net/http mux 服务单页应用程序

转载 作者:IT王子 更新时间:2023-10-29 02:04:47 34 4
gpt4 key购买 nike

我正在构建一个也为我的 React 前端应用程序提供服务的 API,但在为我的 index.html 提供服务时遇到问题

鉴于它不是真正的 go 模板,我没有使用 html/template。

我没有看到在所有未在路由中启动/api 的页面上提供我的应用程序的静态 html 根目录的简单方法。

除了 gorilla 的 mux,我有意尝试不使用任何 go 框架

我的 handler.go:

func Index(w http.ResponseWriter, r *http.Request) {
http.FileServer(http.Dir("./views"))
}

路线.go:

type Route struct {
Name string
Method string
Pattern string
HandlerFunc http.HandlerFunc
}

type Routes []Route

var routes = Routes{
Route{
"Index",
"GET",
"/",
Index,
},
}

路由器.go

import (
"net/http"

"github.com/gorilla/mux"
)

func NewRouter() *mux.Router {

router := mux.NewRouter().StrictSlash(true)
for _, route := range routes {
var handler http.Handler

handler = route.HandlerFunc
handler = Logger(handler, route.Name)

router.
Methods(route.Method).
Path(route.Pattern).
Name(route.Name).
Handler(handler)

}

return router
}

主要:

package main

import (
"./server"
"log"
"net/http"
)

func main() {

router := server.NewRouter()

log.Fatal(http.ListenAndServe(":8080", router))
}

目前显示的是一个空白页面,仅此而已。我的 index.html 位于与可执行文件相关的 /views/index.html 中(但我也尝试过与处理程序相关)

更新

我能够使用这个问题中显示的方法提供 html 文件:How do you serve a static html file using a go web server?然而,使用 mux 和更加模块化的文件结构仍然会产生漂亮、干净的空白页面。

最佳答案

在 handler.go 中,您的 Index 函数实际上是一个空操作,因为 http.FileServer() 返回一个 Handler,它从未传递给 ResponseWriter 或 Request,因此是空白页。

也许尝试这样的事情至少可以克服:

func Index(w http.ResponseWriter, r *http.Request) {
http.FileServer(http.Dir("./views")).ServeHTTP(w, r)
}

关于http - 使用 go net/http mux 服务单页应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34866002/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com