最近在跟別人合作一個專案,由于對方不會用nginx,所以我得嘗試用gin來代理靜態頁面,
gin雖然有代理靜態頁面的方法:Static(relativePath, root string),但是不符合我的需求,因為我一般會將靜態頁面分為多種,比如路由為"/“則為html頁面,因為這樣符合一般的訪問習慣,但在gin中不能這么做,因為gin的路由是一個前綴樹,如果把一個路由設定為”/",其他路由都會出錯,
然而我在gin的issue里找到了一個庫: “github.com/gin-contrib/static”,完美的解決了我的問題,
舉個例子,假如我需要的路由為:
"/" => 前端頁面
"/js/" => js檔案
"/css/" => css檔案
"/asset/img/" => 圖片檔案
則代碼可以這樣寫
package main
import (
"github.com/gin-gonic/gin"
"github.com/gin-contrib/static"
)
func main() {
server := gin.Default()
server.Use(static.ServeRoot("/", "./static/html"))
server.Use(static.ServeRoot("/js", "./static/js"))
server.Use(static.ServeRoot("/css", "./static/css"))
server.Use(static.ServeRoot("/image", "./static/asset/image"))
if err := server.Run(":8080"); err != nil {
panic(err)
}
}
這個庫的用法,主要是把serveRoot當作一個中間件,在每個請求之前都執行一遍,看看路徑是否符合這個路由,如果符合,則回傳這個靜態資源,并結束這個請求,雖然性能上可能會有點問題,但是作為一個demo,這樣做還是很方便的,
我的博客 blog.huining.tech
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/343127.html
標籤:其他
上一篇:計算機網路知識點(一) 引言
