Maison > développement back-end > Golang > le corps du texte

Comment servir des pages Web et des routes API sur le même port avec différents modèles ?

Susan Sarandon
Libérer: 2024-11-15 19:53:03
original
695 Les gens l'ont consulté

How to Serve Web Pages and API Routes on the Same Port with Different Patterns?

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)
Copier après la connexion

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
}
Copier après la connexion

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())
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal