2014-02-16 45 views
-1

我需要一些幫助來開發Web服務器。我把初始代碼http://golang.org/doc/articles/wiki/,特別是這個例子:Golang創建動態函數(運行時)

func handler(w http.ResponseWriter, r *http.Request) { 
    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) 
} 

func main() { 
    http.HandleFunc("/", handler) 
    http.ListenAndServe(":8080", nil) 
} 

此代碼是很簡單的遵循它是所有重定向的GET請求將「localhost」的,其輸出HTML處理函數。

我遇到的問題是,與我的服務器,我將在我的網頁(特別是JQ和圖像等)使用JavaScript鏈接。所以當GET請求進入這些工件時,我需要將它們從驅動器中以字節的形式提取出來,並將它們傳遞給處理程序中的客戶端瀏覽器(如上所述)。

但是;在運行之前,我不知道哪些文件位於本地文件夾中,因此我無法預先製作這些處理程序。我想知道是否有辦法在運行時動態地創建函數。所以我想的僞代碼會去是這樣的:

for file in files: 
    http.HandleFunc(file.location, handler) 

如果可能我會對此錯誤的方式,如果有人閱讀這些條款後,對創造這些本地文件句柄想法,請讓我知道。我也不知道文件的數量或者多少,但是我可以使用Golang來讀取所有文件。

謝謝!

+1

如果你只是需要靜態地處理這些文件,並且沒有對它們進行任何預處理,那麼爲什麼不使用'FileServer'作爲這個擴展名顯示? http://golang.org/pkg/net/http/#example_FileServer –

回答

-1

as @Not_a_Golfer said;這可以通過FileServer爲靜態文件完成。在我的情況下,這工作得很好,因爲我有很多未知的文件。

+0

這個答案是downvoted,因爲它是golang動態函數的頂級google結果,但不回答原始問題。 – vicTROLLA