這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
一. 保持代碼的整潔和進行合理的分流
http.StripPrefix函數的作用之一,就是在將請求定向到你通過參數指定的請求處理處之前,將特定的prefix從URL中過濾出去。下面是一個瀏覽器或HTTP用戶端請求資源的例子:
/static/example.txt
StripPrefix 函數將會過濾掉/static/,並將修改過的請求定向到http.FileServer所返回的Handler中去,因此請求的資源將會是:
/example.txt
http.FileServer 返回的Handler將會進行尋找,並將與檔案夾或檔案系統有關的內容以參數的形式返回給你(在這裡你將"static"作為靜態檔案的根目錄)。因為你的"example.txt"檔案在靜態目錄中,你必須定義一個相對路徑去獲得正確的檔案路徑。
二. 根據需要定製訪問路徑
下面這個例子可以在http包的文檔中找到:
// To serve a directory on disk (/tmp) under an alternate URL// path (/tmpfiles/), use StripPrefix to modify the request// URL's path before the FileServer sees it:http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))
FileServer 已經明確靜態檔案的根目錄在"/tmp",但是我們希望URL以"/tmpfiles/"開頭。如果有人請求"/tempfiles/example.txt",我們希望伺服器能將檔案發送給他。為了達到這個目的,我們必須從URL中過濾掉"/tmpfiles", 而剩下的路徑是相對於根目錄"/tmp"的相對路徑。如果我們按照如上做法,將會得到如下結果:
/tmp/example.txt