您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何理解基于gorilla/mux 包實現路由匹配的處理靜態資源響應,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
到目前為止,我們都是在處理動態資源,也就是 Go 代碼實現的響應。HTTP 服務器除了處理動態資源之外,還應該具備處理靜態資源的能力,比如 HTML、CSS、JavaScript、圖片都屬于靜態資源的范疇。
要處理靜態資源,需要借助 PathPrefix()
方法指定靜態資源所在的路徑前綴,然后在請求處理器中通過 http.FileServer
直接返回文件內容本身作為響應:
func main() {
r := mux.NewRouter()
r.Use(loggingMiddleware)
// 解析服務器啟動參數 dir 作為靜態資源 Web 根目錄
// 默認是當前目錄 .
var dir string
flag.StringVar(&dir, "dir", ".", "靜態資源所在目錄,默認為當前目錄")
flag.Parse()
// 處理形如 http://localhost:8000/static/<filename> 的靜態資源路由
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir(dir))))
// 其它路由
...
log.Fatal(http.ListenAndServe(":8080", r))
}
以上述代碼為例,當我們請求 http://localhost:8080/static/app.js
文件時,會到 static
目錄下查找 app.js
,如果找不到會返回 404,否則返回文件本身作為響應。
我們試著在上述入口文件所在目錄下創建 static/app.js
,并初始化代碼如下:
document.write("hello from javascript");
然后在 static
目錄下放置一張圖片 test.jpg
文件,啟動這個 HTTP 服務器:
go run mux.go -dir=static
注意這里我們通過 dir
參數指定了靜態資源的根目錄為 static
,如果不指定的話訪問上述靜態資源會報 404。
接下來,就可以在瀏覽器中訪問服務器 static
目錄下的靜態資源了:
雖然 gorilla/mux
路由器提供了對靜態資源的支持,但是通常我們還是會和 PHP 一樣,基于 Nginx 來處理靜態資源,然后將動態請求轉發給 Go HTTP 服務器,因為 Nginx 作為一款強大的反向代理服務器,并發處理靜態資源的能力非常強悍,沒必要自己去處理這塊邏輯。
看完上述內容,你們對如何理解基于gorilla/mux 包實現路由匹配的處理靜態資源響應有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。