Maison  >  Article  >  développement back-end  >  Golang implémente le routage

Golang implémente le routage

WBOY
WBOYoriginal
2023-05-19 09:38:07628parcourir

Golang est un langage de programmation très populaire. Il fournit des frameworks et des bibliothèques très puissants, permettant aux développeurs de créer facilement des applications Web hautes performances. Dans Golang, le routage est l'un des composants essentiels des applications Web. Il peut mapper les URL et envoyer des requêtes au gestionnaire approprié. Dans cet article, nous verrons comment implémenter le routage à l'aide de Golang.

Dans Golang, plusieurs frameworks peuvent être utilisés pour implémenter le routage, notamment gin, beego, martini, etc. Ces frameworks offrent de puissantes capacités de routage et sont faciles à utiliser. Cependant, dans cet article, nous comprendrons le fonctionnement interne des routeurs en écrivant notre propre routeur, ce qui sera très utile pour mieux comprendre le développement d'applications Web.

Tout d'abord, nous devons définir une structure de routage, qui contient les méthodes HTTP (GET, POST, etc.), les chemins d'URL et les fonctions de traitement. Cette structure sera utilisée comme entrée de la table de routage.

type Route struct {
  Method string
  Pattern string
  HandlerFunc http.HandlerFunc
}

Ensuite, nous devons définir une table de routage, qui est une tranche de la structure Route. La table de routage contiendra toutes les routes prises en charge et les fonctions de gestionnaire correspondantes.

type Routes []Route

Dans la table de routage, nous pouvons définir quelques routes de base, telles que "/", qui sera utilisé pour le répertoire racine, et "/health", qui sera utilisé pour renvoyer l'état de santé de l'application. Il est également possible de définir d'autres routes, telles que "/users", pour gérer les actions des utilisateurs.

var routes = Routes{
  Route{
    "GET",
    "/",
    HomeHandler,
  },
  Route{
    "GET",
    "/health",
    HealthHandler,
  },
  Route{
    "GET",
    "/users",
    GetUsersHandler,
  },
  Route{
    "POST",
    "/users",
    CreateUserHandler,
  },
  Route{
    "PUT",
    "/users/{id}",
    UpdateUserHandler,
  },
  Route{
    "DELETE",
    "/users/{id}",
    DeleteUserHandler,
  },
}

Dans l'exemple ci-dessus, nous avons défini 6 routes, chacune avec une méthode HTTP et un chemin d'URL différents, et avons utilisé les fonctions de gestionnaire correspondantes pour traiter ces routes.

Ensuite, nous devons créer une structure de routeur, qui contiendra la table de routage et fournira des fonctionnalités de routage. Cette structure contiendra HTTP ServerMux.

type Router struct {
  Routes Routes
  mux *http.ServeMux
}

Dans le routeur, nous définirons une méthode pour initialiser le HTTP ServerMux et la table de routage.

func (router *Router) Init() {
  router.mux = http.NewServeMux()
  for _, route := range router.Routes {
    router.mux.HandleFunc(route.Pattern, route.HandlerFunc)
  }
}

Dans l'exemple ci-dessus, nous utilisons la méthode HandleFunc de HTTP ServerMux pour enregistrer le chemin de l'URL et la fonction de gestionnaire dans le routeur. Cela permettra au routeur d’acheminer la demande vers la fonction de gestionnaire appropriée.

Enfin, nous devons créer un serveur HTTP en utilisant la structure du routeur.

func main() {
  router := Router{Routes: routes}
  router.Init()
  http.ListenAndServe(":8080", router.mux)
}

Dans l'exemple ci-dessus, nous utilisons la fonction ListenAndServe pour démarrer le serveur HTTP et transmettre le HTTP ServerMux du routeur à la fonction.

Il s'agit d'implémenter le routage dans Golang. Bien que dans les applications du monde réel, il soit rarement nécessaire d'écrire votre propre routeur, comprendre le fonctionnement des routeurs est crucial pour avoir un aperçu du développement d'applications Web Golang.

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
Article précédent:Comment placer le golangArticle suivant:Comment placer le golang