Servir des pages Web et des routes API sur le même port avec différents modèles
Dans les applications Web, il est souvent souhaité de servir à la fois des pages Web statiques et Routes API utilisant la même adresse de port. Pour y parvenir, vous pouvez exploiter les capacités de correspondance de modèles fournies par le package net/http.
L'enregistrement d'un gestionnaire de fichiers pour l'URL racine ("/") diffusera le contenu statique d'un répertoire spécifié. Par exemple :
fs := http.FileServer(http.Dir("server/webapps/play_maths")) http.Handle("/", fs)
Pour servir les routes API, vous pouvez créer un gestionnaire distinct à l'aide d'un routeur tel que mux.Router. Par exemple :
func UserRoutes() *mux.Router { router := mux.NewRouter().StrictSlash(true) router.HandleFunc("/user/create", api.CreateUser) router.HandleFunc("/user/get/all", api.GetAllUsers) return router }
L'enregistrement de ce routeur API avec un modèle spécifique vous permet de gérer les requêtes API avec différents chemins. Par exemple :
http.Handle("/api", UserRoutes())
Selon la documentation net/http, les modèles plus longs ont priorité sur les plus courts. Cela signifie que toute requête commençant par "/api/" sera traitée par le routeur API, tandis que toute autre requête sera dirigée vers le gestionnaire de fichiers.
Notez que cette approche nécessite un examen attentif pour éviter des conflits potentiels. Par exemple, si les fichiers statiques étaient placés dans le répertoire "/api/", ils ne seraient plus accessibles en raison du modèle d'API prioritaire.
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!