91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

霍邱县| 柳林县| 萍乡市| 神木县| 涡阳县| 太仓市| 山东| 比如县| 黄冈市| 颍上县| 晋中市| 宜州市| 菏泽市| 湾仔区| 麻城市| 新源县| 垦利县| 丁青县| 讷河市| 古田县| 大埔县| 陇西县| 天祝| 石棉县| 万荣县| 阜新市| 七台河市| 富锦市| 宿州市| 衢州市| 托克托县| 都安| 青河县| 五华县| 砀山县| 北川| 哈密市| 蓝山县| 淄博市| 澳门| 西乌珠穆沁旗|