Maison >développement back-end >Golang >Comment servir des pages Web et des routes API sur le même port en Go ?
Servir des pages Web et des routes API sur le même port avec différents modèles de handle
Servir à la fois des pages Web et des routes API sur le même port à l'aide Des modèles de gestion distincts sont une exigence courante dans le développement Web. Voici comment y parvenir dans Go à l'aide du package net/http :
Le package net/http fournit le type ServeMux, qui gère un ensemble de gestionnaires pour les requêtes HTTP entrantes. L’enregistrement des gestionnaires se fait via la méthode Handle. Selon la documentation, les modèles plus longs ont priorité sur les modèles plus courts. Cette propriété peut être exploitée pour servir des pages Web et des routes API simultanément sur le même port.
Par exemple, pour servir des pages Web sous le chemin racine / et des routes API sous /api, vous pouvez utiliser le code suivant :
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
La fonction UserRoutes crée un sous-routeur pour les routes API. Par défaut, les sous-routeurs héritent du préfixe du routeur parent, mais vous pouvez remplacer ce comportement à l'aide de la méthode PathPrefix. Le routeur est ensuite utilisé comme gestionnaire pour nos routes API.
En enregistrant le gestionnaire de page Web avant le gestionnaire de routes API, en garantissant que le gestionnaire de page Web a un modèle plus court, nous exploitons le fait que les modèles plus longs avoir la priorité. Par conséquent, les requêtes commençant par /api seront traitées par le gestionnaire de routes API, tandis que toutes les autres requêtes (y compris celles vers le chemin racine) seront traitées par le gestionnaire de pages Web.
Cette approche fournit un moyen flexible de gérer différents types de requêtes HTTP sur le même serveur sans avoir besoin d'exécuter plusieurs processus ou d'utiliser un proxy inverse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!