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