Maison >développement back-end >Golang >Comment servir des pages Web et des routes API sur le même port avec différents modèles de handle ?
Dans un scénario d'application Web, il peut être pratique de servir à la fois des pages Web statiques et des API itinéraires sur la même adresse de port. Cela permet une architecture rationalisée et une utilisation efficace des ressources. Pour y parvenir en utilisant différents modèles de poignées, suivez ces étapes :
1. Enregistrer un gestionnaire de fichiers
Enregistrez un serveur de fichiers pour servir des fichiers statiques. Dans cet exemple, il est utilisé pour servir les fichiers du répertoire "server/webapps/play_maths" au chemin racine (/) :
fs := http.FileServer(http.Dir("server/webapps/play_maths")) http.Handle("/", fs)
2. Enregistrez API Handler
Créez un routeur pour gérer les routes API. Dans ce cas, UserRoutes() définit des routes pour créer des utilisateurs et récupérer tous les utilisateurs :
func UserRoutes() *mux.Router { router := mux.NewRouter().StrictSlash(true) router.HandleFunc("/user/create", api.CreateUser) router.HandleFunc("/user/get/all", api.GetAllUsers) return router }
3. Attacher le gestionnaire d'API au chemin
Enregistrez le routeur API sur un chemin racine spécifique, tel que "/api/". Cela garantit que toutes les requêtes commençant par "/api/" seront traitées par les routes API :
http.Handle("/api/", UserRoutes())
Remarque : L'ordre d'enregistrement des routes est important. Les modèles plus longs ont priorité sur les plus courts. Par conséquent, il est important d’enregistrer les routes API les plus spécifiques avant le gestionnaire de fichiers général. Cela empêche les requêtes adressées aux routes API d'être interceptées par le gestionnaire de fichiers.
En suivant ces étapes, vous pouvez servir à la fois des pages Web statiques et des routes API sur la même adresse de port tout en conservant des modèles de gestion différents. Cela offre de la flexibilité et améliore les performances en réduisant le besoin de plusieurs instances de serveur.
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!