Maison  >  Article  >  développement back-end  >  golang soumettre le formulaire sauter

golang soumettre le formulaire sauter

WBOY
WBOYoriginal
2023-05-14 17:29:08632parcourir

Soumettre un formulaire et y accéder est une tâche courante dans Golang. La soumission d'un formulaire peut être utilisée pour de nombreux cas d'utilisation différents, tels que l'enregistrement d'un utilisateur, la recherche, l'ajout ou la mise à jour de données, etc. Dans cet article, nous explorerons comment rédiger un émetteur de formulaire de base et comment gérer les sauts.

Mettre en œuvre la soumission du formulaire

Tout d'abord, nous avons besoin d'un simple formulaire HTML pour soumettre les données. Vous trouverez ci-dessous un formulaire simple avec un nom d'utilisateur et un mot de passe :

<html>
<head>
    <title>登录页面</title>
</head>
<body>
    <h1>欢迎来到我的网站</h1>
    <form action="/login" method="post">
        用户名: <input type="text" name="username"><br>
        密码: <input type="password" name="password"><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

Le formulaire utilise la méthode POST pour envoyer les données de soumission au chemin /login. Nous devons configurer un gestionnaire sur le serveur Go pour recevoir ces données.

Côté serveur, nous devons utiliser le package net/http pour traiter ce formulaire. Nous pouvons utiliser la fonction http.HandleFunc() pour définir un gestionnaire pour la soumission du formulaire. Voici le code du gestionnaire :

func loginHandler(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()

    username := r.Form.Get("username") // 获取表单中的用户名
    password := r.Form.Get("password") // 获取表单中的密码

    // 在这里执行登录逻辑
    // ...

    // 跳转到登录成功后的页面
    http.Redirect(w, r, "/success", http.StatusSeeOther)
}

Le gestionnaire analyse d'abord les données du formulaire à l'aide de la méthode r.ParseForm(). Ensuite, nous obtenons le nom d'utilisateur et le mot de passe en appelant la méthode r.Form.Get(). Ensuite, nous pouvons effectuer n'importe quelle logique de validation de connexion dans le gestionnaire et passer à une autre page si nécessaire.

Gestion des sauts

Dans le gestionnaire ci-dessus, nous utilisons la méthode http.Redirect() pour passer à une autre page. Cette méthode reçoit 3 paramètres : objet http.ResponseWriter, objet *http.Request et URL cible. Le paramètre http.StatusSeeOther nous demande d'utiliser le code d'état 303 pour le saut.

Lorsque le formulaire est soumis, le serveur enverra une réponse HTTP au navigateur. Dans la réponse, nous pouvons définir des en-têtes HTTP pour indiquer au navigateur de passer à une autre page. Cela peut être fait en définissant l'en-tête HTTP "Location". Dans Go, nous pouvons utiliser l'objet ResponseWriter pour définir les en-têtes HTTP.

Dans le gestionnaire ci-dessus, nous définissons l'URL cible sur "/success" dans la méthode http.Redirect(). Après une connexion réussie, nous accéderons à cette URL. Nous devons configurer un nouveau gestionnaire dans le gestionnaire du serveur pour gérer cette URL.

Voici le code du gestionnaire :

func successHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "恭喜,登录成功!")
}

Le gestionnaire affiche simplement un message de connexion réussie sur la page. Dans les applications réelles, nous pouvons avoir besoin d'effectuer d'autres opérations, telles que l'ajout de données à la base de données ou la mise à jour des données.

Utilisation de gorilla/mux pour le routage

Nous pouvons utiliser la bibliothèque standard HTTP pour implémenter la soumission de formulaires, mais ses capacités de routage sont très limitées. Par conséquent, nous utilisons généralement des logiciels tiers pour gérer le routage. Dans cet exemple, nous utiliserons gorilla/mux.

gorilla/mux est un progiciel tiers très populaire qui peut être utilisé pour créer un routage HTTP flexible. En utilisant gorilla/mux, nous pouvons mapper plusieurs gestionnaires sur différentes routes. Cela rend le code plus facile à lire et à maintenir.

Voici le code complet utilisant gorilla/mux :

package main

import (
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

func loginHandler(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()

    username := r.Form.Get("username")
    password := r.Form.Get("password")

    // 执行登录逻辑
    // ...

    // 跳转到成功页面
    http.Redirect(w, r, "/success", http.StatusSeeOther)
}

func successHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "恭喜,登录成功!")
}

func main() {
    r := mux.NewRouter()

    r.HandleFunc("/login", loginHandler).Methods("POST")
    r.HandleFunc("/success", successHandler)

    http.ListenAndServe(":8000", r)
}

Dans cet exemple, nous utilisons le package gorilla/mux pour créer un nouveau routeur. Nous ajoutons ensuite deux gestionnaires au routeur : un pour gérer la soumission du formulaire et un autre pour gérer la page de réussite. Nous utilisons la méthode router.HandleFunc() pour configurer le gestionnaire et spécifier la méthode HTTP. Nous pouvons également utiliser la méthode router.PathPrefix() pour définir le préfixe URL du gestionnaire.

La dernière ligne de code appelle la fonction http.ListenAndServe() pour démarrer le serveur. Cette fonction reçoit deux paramètres : l'adresse du serveur et l'objet routeur.

Résumé

Dans cet article, nous avons appris comment implémenter la soumission de formulaire dans Go et gérer le saut après une soumission réussie. Nous avons également découvert les avantages de l'utilisation du package gorilla/mux pour gérer le routage HTTP. En utilisant ces technologies, nous pouvons créer des applications Web magnifiques et riches en fonctionnalités.

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:Golang a-t-il des cours ?Article suivant:Golang a-t-il des cours ?