首頁 >後端開發 >Golang >如何在同一連接埠上以不同的模式提供網頁和API路由?

如何在同一連接埠上以不同的模式提供網頁和API路由?

Susan Sarandon
Susan Sarandon原創
2024-11-15 19:53:03749瀏覽

How to Serve Web Pages and API Routes on the Same Port with Different Patterns?

在同一連接埠上以不同模式提供網頁和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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn