今天就跟大家聊聊有關(guān)如何理解基于gorilla/mux 包實(shí)現(xiàn)路由匹配的處理靜態(tài)資源響應(yīng),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)建站專注于禪城網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供禪城營銷型網(wǎng)站建設(shè),禪城網(wǎng)站制作、禪城網(wǎng)頁設(shè)計(jì)、禪城網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造禪城網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供禪城網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
到目前為止,我們都是在處理動(dòng)態(tài)資源,也就是 Go 代碼實(shí)現(xiàn)的響應(yīng)。HTTP 服務(wù)器除了處理動(dòng)態(tài)資源之外,還應(yīng)該具備處理靜態(tài)資源的能力,比如 HTML、CSS、JavaScript、圖片都屬于靜態(tài)資源的范疇。
要處理靜態(tài)資源,需要借助 PathPrefix()
方法指定靜態(tài)資源所在的路徑前綴,然后在請求處理器中通過 http.FileServer
直接返回文件內(nèi)容本身作為響應(yīng):
func main() {
r := mux.NewRouter()
r.Use(loggingMiddleware)
// 解析服務(wù)器啟動(dòng)參數(shù) dir 作為靜態(tài)資源 Web 根目錄
// 默認(rèn)是當(dāng)前目錄 .
var dir string
flag.StringVar(&dir, "dir", ".", "靜態(tài)資源所在目錄,默認(rèn)為當(dāng)前目錄")
flag.Parse()
// 處理形如 http://localhost:8000/static/
的靜態(tài)資源路由 r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir(dir))))
// 其它路由
...
log.Fatal(http.ListenAndServe(":8080", r))
}
以上述代碼為例,當(dāng)我們請求 http://localhost:8080/static/app.js
文件時(shí),會(huì)到 static
目錄下查找 app.js
,如果找不到會(huì)返回 404,否則返回文件本身作為響應(yīng)。
我們試著在上述入口文件所在目錄下創(chuàng)建 static/app.js
,并初始化代碼如下:
document.write("hello from javascript");
然后在 static
目錄下放置一張圖片 test.jpg
文件,啟動(dòng)這個(gè) HTTP 服務(wù)器:
go run mux.go -dir=static
注意這里我們通過 dir
參數(shù)指定了靜態(tài)資源的根目錄為 static
,如果不指定的話訪問上述靜態(tài)資源會(huì)報(bào) 404。
接下來,就可以在瀏覽器中訪問服務(wù)器 static
目錄下的靜態(tài)資源了:
雖然 gorilla/mux
路由器提供了對靜態(tài)資源的支持,但是通常我們還是會(huì)和 PHP 一樣,基于 Nginx 來處理靜態(tài)資源,然后將動(dòng)態(tài)請求轉(zhuǎn)發(fā)給 Go HTTP 服務(wù)器,因?yàn)?Nginx 作為一款強(qiáng)大的反向代理服務(wù)器,并發(fā)處理靜態(tài)資源的能力非常強(qiáng)悍,沒必要自己去處理這塊邏輯。
看完上述內(nèi)容,你們對如何理解基于gorilla/mux 包實(shí)現(xiàn)路由匹配的處理靜態(tài)資源響應(yīng)有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。