在同一連接埠上以不同模式提供網頁和API 路由
在Web 應用程式中,通常需要同時提供靜態網頁和API路由。使用相同連接埠位址的 API 路由。為此,您可以利用 net/http 套件提供的模式匹配功能。
為根 URL(「/」)註冊檔案處理程序將提供指定目錄中的靜態內容。例如:
fs := http.FileServer(http.Dir("server/webapps/play_maths")) http.Handle("/", fs)
要提供 API 路由,您可以使用 mux.Router 等路由器建立單獨的處理程序。例如:
func UserRoutes() *mux.Router { router := mux.NewRouter().StrictSlash(true) router.HandleFunc("/user/create", api.CreateUser) router.HandleFunc("/user/get/all", api.GetAllUsers) return router }
使用特定模式註冊此 API 路由器可讓您處理具有不同路徑的 API 要求。例如:
http.Handle("/api", UserRoutes())
根據 net/http 文檔,較長的模式優先於較短的模式。這意味著任何以“/api/”開頭的請求都將由 API 路由器處理,而任何其他請求將被導向到文件處理程序。
請注意,這種方法需要仔細考慮,以防止潛在的衝突。例如,如果靜態檔案放置在「/api/」目錄中,則由於 API 模式優先,它們將不再可存取。
以上是如何在同一連接埠上以不同的模式提供網頁和API路由?的詳細內容。更多資訊請關注PHP中文網其他相關文章!