首頁 > 後端開發 > Golang > 如何在 Go 中在同一連接埠上提供網頁和 API 路由?

如何在 Go 中在同一連接埠上提供網頁和 API 路由?

Susan Sarandon
發布: 2024-11-30 16:58:11
原創
964 人瀏覽過

How to Serve Web Pages and API Routes on the Same Port in Go?

使用不同的句柄模式在同一連接埠上提供網頁和API 路由

使用以下方式在同一連接埠上提供網頁和API 路由不同的句柄模式是Web 開發中的常見要求。以下是如何在 Go 中使用 net/http 套件實現此目的:

net/http 套件提供 ServeMux 類型,它管理一組傳入 HTTP 請求的處理程序。處理程序的註冊是透過 Handle 方法完成的。根據文檔,較長的模式優先於較短的模式。可以利用此屬性在同一連接埠上同時提供網頁和 API 路由。

例如,要在根路徑 / 下提供網頁和 /api 下的 API 路由,可以使用以下程式碼:

fs := http.FileServer(http.Dir("server/webapps/play_maths"))
http.Handle("/", fs) // Handles web pages at root path

apiRoutes := UserRoutes() // Initialize API routes as a handler
http.Handle("/api", apiRoutes.ServeHTTP) // Handles API routes
登入後複製

UserRoutes 函數為 API 路由建立子路由器。預設情況下,子路由器繼承父路由器的前綴,但您可以使用 PathPrefix 方法覆寫此行為。然後,路由器將用作我們的 API 路由的處理程序。

透過在 API 路由處理程序之前註冊網頁處理程序,確保網頁處理程序具有較短的模式,我們正在利用較長模式的事實優先。因此,以 /api 開頭的請求將由 API 路由處理程序處理,而所有其他請求(包括根路徑的請求)將由網頁處理程序處理。

此方法提供了在同一台伺服器上靈活處理不同類型的 HTTP 請求,無需執行多個進程或使用反向代理。

以上是如何在 Go 中在同一連接埠上提供網頁和 API 路由?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板