为了账号安全,请及时绑定邮箱和手机立即绑定

使用 go net/http mux 为单页应用程序提供服务

使用 go net/http mux 为单页应用程序提供服务

Go
MMMHUHU 2021-12-13 10:37:28
我正在构建一个 api,它也为我的 React 前端应用程序提供服务,但是在为我的 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"))}Routes.go:type Route struct {    Name        string    Method      string    Pattern     string    HandlerFunc http.HandlerFunc}type Routes []Routevar routes = Routes{    Route{        "Index",        "GET",        "/",        Index,    },}路由器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 mainimport (    "./server"    "log"    "net/http")func main() {    router := server.NewRouter()    log.Fatal(http.ListenAndServe(":8080", router))}目前出现一个空白页面,仅此而已。我的 index.html 位于/views/index.html与可执行文件相关的位置(但我也尝试过与处理程序相关)
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

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


也许尝试这样的事情至少可以通过:


func Index(w http.ResponseWriter, r *http.Request) {

    http.FileServer(http.Dir("./views")).ServeHTTP(w, r)

}


查看完整回答
反对 回复 2021-12-13
  • 1 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号