猿问

FileServer 处理程序与其他一些 HTTP 处理程序

我正在尝试在 Go 中启动一个 HTTP 服务器,它将使用我自己的处理程序为我自己的数据提供服务,但同时我想使用默认的 http FileServer 来提供文件。


我在使 FileServer 的处理程序在 URL 子目录中工作时遇到问题。


此代码不起作用:


package main


import (

        "fmt"

        "log"

        "net/http"

)


func main() {

        http.Handle("/files/", http.FileServer(http.Dir(".")))

        http.HandleFunc("/hello", myhandler)


        err := http.ListenAndServe(":1234", nil)

        if err != nil {

                log.Fatal("Error listening: ", err)

        }

}


func myhandler(w http.ResponseWriter, req *http.Request) {

        fmt.Fprintln(w, "Hello!")

}

我期待在 localhost:1234/files/ 中找到本地目录,但它返回一个404 page not found.


但是,如果我将文件服务器的处理程序地址更改为 /,它会起作用:


        /* ... */

        http.Handle("/", http.FileServer(http.Dir(".")))

但是现在我的文件可以在根目录中访问和可见。


如何使它从与 root 不同的 URL 提供文件?


斯蒂芬大帝
浏览 211回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答