gpt4 book ai didi

go - 使用 gorilla mux 提供静态 html 文件

转载 作者:IT王子 更新时间:2023-10-29 01:44:18 36 4
gpt4 key购买 nike

我正在尝试根据路由提供不同的 HTML 文件。路由器对“/”工作正常,它服务于 index.html。然而,当转到“/download”等任何其他路径时,它还会呈现 index.html,即使要提供的文件名为 share.html。

我在这里做错了什么?

    package main

import (
"net/http"
"github.com/gorilla/mux"
"log"
"path"
"fmt"
)

// main func
func main() {
routes()
}

// routes
func routes() {
// init router
r := mux.NewRouter()
// index route
r.HandleFunc("/", home)
r.HandleFunc("/share", share)
r.HandleFunc("/download", download)

// start server on port 1337
log.Fatal(http.ListenAndServe(":1337", r))
}

// serves index file
func home(w http.ResponseWriter, r*http.Request) {
p := path.Dir("./public/views/index.html")
// set header
w.Header().Set("Content-type", "text/html")
http.ServeFile(w, r, p)
}

// get shared files
func share(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case "POST":
if err := r.ParseForm(); err != nil {
fmt.Fprint(w, "ParseForm() err: %v", err)
return
}
log.Println(r.FormValue("name"))
http.Redirect(w, r, "/download", http.StatusMovedPermanently)
}
}

func download(w http.ResponseWriter, r *http.Request) {
p := path.Dir("./public/views/share.html")
// set header
w.Header().Set("Content-type", "text/html")
http.ServeFile(w, r, p)
}

最佳答案

我相信您可能正在寻找“PathPrefix”

func routes() {
// init router
r := mux.NewRouter()
r.PathPrefix("/").Handler(http.FileServer(http.Dir("./public/views/")))
}

关于go - 使用 gorilla mux 提供静态 html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50651523/

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