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

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

Go:在我的 API 端點旁邊提供靜態頁面(它們的端點)

Go:在我的 API 端點旁邊提供靜態頁面(它們的端點)

Go
神不在的星期二 2022-01-04 13:27:43
所以我遇到了一個問題,我只能讓我的 API 端點工作或我的靜態文件工作。我使用 gorilla/mux 作為我的路由器,它可能與配置有關。我有四個文件,我認為在這種情況下很重要:main.gofunc main() {    envVars()    router := NewRouter()    log.Fatal(http.ListenAndServe(":8080", router))}路由器func NewRouter() *mux.Router {    // create new router    router := mux.NewRouter()    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(route.HandlerFunc)    }    return router}路線var routes = Routes{    Route{       // TODO: Find way to render static file       "Index",        "GET",        "/",        Index,    },    Route{        "PostIndex",        "GET",        "/api/posts",        PostIndex,    },    Route{        "PostCreate",        "POST",        "/api/posts",        PostCreate,    },}handlers.gofunc Index(w http.ResponseWriter, r *http.Request) {    // TODO: Something to render html file}通過研究,我認為我可以使用子路由器,但似乎應該有更好的方法來做到這一點。對于我已經實現的所有其他路由,但是為了呈現 html 文件,我不確定該方法中會放什么。查看整個項目,請訪問:https : //github.com/nicholasrucci/blog
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

更新了 代碼以修復錯誤。僅將文件服務器綁定到根路徑,讓其他路由自由供其他處理程序使用。


刪除routes.go中的Index路由并像這樣更新router.go:


func NewRouter() *mux.Router {

    // create new router

    router := mux.NewRouter()


    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(route.HandlerFunc)

    }


    router.Path("/").Handler(http.FileServer(http.Dir("public/")))


    return router


}

這將在您的域根目錄下的公共目錄中公開 index.html 文件。


查看完整回答
反對 回復 2022-01-04
?
森欄

TA貢獻1810條經驗 獲得超5個贊

我最終做的是制作一個模板函數并從那里渲染我的 HTML。


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

    t := template.New("Test")

    t, err = t.Parse("<html><body>Hello World</body></html>)

    if err != nil {

        log.Fatal(err)

    }


    err = t.Execute(w, t)

    if err != nil {

        log.Fatal(err)

    }

}


查看完整回答
反對 回復 2022-01-04
  • 2 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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