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 ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-15 19:53:03749parcourir

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)

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!

Déclaration:
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