中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go文件服務器中http.StripPrefix的作用是什么

發布時間:2020-12-19 14:24:24 來源:億速云 閱讀:597 作者:Leah 欄目:開發技術

go文件服務器中http.StripPrefix的作用是什么?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

當訪問localhost:xxxx/tmpfiles時,會路由到fileserver進行處理

當訪問URL為/tmpfiles/example.txt時,fileserver會將/tmp與URL進行拼接,得到/tmp/tmpfiles/example.txt,而實際上example.txt的地址是/tmp/example.txt,因此這樣將訪問不到相應的文件,返回404 NOT FOUND。

因此解決方案就是把URL中的/tmpfiles/去掉,而http.StripPrefix做的就是這個。

補充:go語言實現一個簡單的文件服務器 http.FileServer

代碼如下:

package main
import (
 "flag"
 "fmt"
 "github.com/julienschmidt/httprouter"
 "log"
 "net/http"
 "strings"
 "time"
)
func main() {
 root := flag.String("p", "", "file server root directory")
 flag.Parse()
 if len(*root) == 0 {
 log.Fatalln("file server root directory not set")
 }
 if !strings.HasPrefix(*root, "/") {
 log.Fatalln("file server root directory not begin with '/'")
 }
 if !strings.HasSuffix(*root, "/") {
 log.Fatalln("file server root directory not end with '/'")
 }
 p, h := NewFileHandle(*root)
 r := httprouter.New()
 r.GET(p, LogHandle(h))
 log.Fatalln(http.ListenAndServe(":8080", r))
}
func NewFileHandle(path string) (string, httprouter.Handle) {
 return fmt.Sprintf("%s*files", path), func(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
 http.StripPrefix(path, http.FileServer(http.Dir(path))).ServeHTTP(w, r)
 }
}
func LogHandle(handle httprouter.Handle) httprouter.Handle {
 return func(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
 now := time.Now()
 handle(w, r, p)
 log.Printf("%s %s %s done in %v", r.RemoteAddr, r.Method, r.URL.Path, time.Since(now))
 }
}

準備測試文件

go文件服務器中http.StripPrefix的作用是什么

編譯運行

go文件服務器中http.StripPrefix的作用是什么

用瀏覽器訪問

go文件服務器中http.StripPrefix的作用是什么

go文件服務器中http.StripPrefix的作用是什么

關于go文件服務器中http.StripPrefix的作用是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达拉特旗| 密云县| 义乌市| 辽中县| 沙湾县| 道孚县| 象州县| 若尔盖县| 贵定县| 鲜城| 东山县| 永川市| 阿瓦提县| 科技| 化德县| 泊头市| 舒兰市| 玉溪市| 惠来县| 荃湾区| 永善县| 年辖:市辖区| 忻城县| 临泉县| 天峨县| 双峰县| 双鸭山市| 堆龙德庆县| 和田市| 缙云县| 东明县| 怀远县| 赫章县| 和林格尔县| 天全县| 治县。| 香格里拉县| 泰安市| 郴州市| 镇江市| 景德镇市|