Implementieren Sie die Datenvalidierung in Go

WBOY
Freigeben: 2024-08-19 12:31:20
Original
618 Leute haben es durchsucht

Implement data validation in Go

Datenvalidierung ist ein wichtiger Teil der Softwareentwicklung. Es stellt sicher, dass die Eingabedaten korrekt sind und den Anforderungen entsprechen, bevor sie verarbeitet oder gespeichert werden. In Go ist die Datenvalidierung einfach und flexibel.

In diesem Leitfaden erfahren Sie, wie Sie Struktur-Tags verwenden, um Daten zu validieren und Ihre Apps sicher und zuverlässig zu machen. Von der Erstellung der Validierungslogik bis zur Verwendung integrierter Validierungs-Tags.

Voraussetzungen

  • Gehe 1.21

Setup-Projekt

Einrichten der Go-Projektabhängigkeiten.

go mod init app go get github.com/gin-gonic/gin
Nach dem Login kopieren

Projektstruktur

├─ main.go ├─ models │ └─ user.go └─ public └─ index.html
Nach dem Login kopieren

Projektdateien

user.go

Die Benutzerstruktur dient zum Testen der Validierung innerhalb der Anwendung und enthält Validierungs-Tags, um bestimmte Regeln durchzusetzen.

package models type User struct { Id int `binding:"required" msg:"Required"` Name string `binding:"max=10" msg:"Maximum length is 10"` Email string `binding:"email" msg:"Invalid email address"` Age int `binding:"min=1,max=100" msg:"Must between 1 and 100"` BirthDate string `binding:"datetime=01/02/2006" msg:"Invalid date format"` }
Nach dem Login kopieren

Da die Standardfehlermeldungen nicht benutzerfreundlich sind, haben wir ein benutzerdefiniertes Msg-Tag hinzugefügt, um aussagekräftigere Fehlermeldungen zu definieren.

main.go

Diese Datei ist der Haupteinstiegspunkt für unsere Anwendung. Es wird die minimale Go-Webanwendung erstellen und einrichten.

package main import ( "app/models" "net/http" "reflect" "github.com/gin-gonic/gin" "github.com/go-playground/validator/v10" ) func main() { router := gin.Default() router.LoadHTMLFiles("public/index.html") router.GET("/", func(c *gin.Context) { c.HTML(http.StatusOK, "index.html", nil) }) router.POST("/", func(c *gin.Context) { var user models.User if err := c.ShouldBind(&user); err != nil { c.HTML(http.StatusOK, "index.html", gin.H{"User": user, "Errors": getErrors(err, user)}) return } c.HTML(http.StatusOK, "index.html", gin.H{"Pass": true, "User": user}) }) router.Run() } func getErrors(err error, obj any) map[string]string { messages := getMessages(obj) errors := map[string]string{} for _, e := range err.(validator.ValidationErrors) { errors[e.Field()] = messages[e.Field()] } return errors } func getMessages(obj any) map[string]string { t := reflect.TypeOf(obj) messages := map[string]string{} for i := 0; i < t.NumField(); i++ { field := t.Field(i) messages[field.Name] = field.Tag.Get("msg") } return messages }
Nach dem Login kopieren
  • GET-Methode, um das Eingabeformular zurückzugeben.
  • POST-Methode zur Formularübermittlung und Validierung von Benutzereingaben.
  • getErrors() gibt die Fehlerinformationen zurück.
  • getMessages() nutzt unser benutzerdefiniertes msg-Tag, um Fehlermeldungen für bestimmte Felder abzurufen.

index.html

Das HTML-Benutzereingabeformular dient zum Testen der auf die Benutzerstruktur angewendeten Validierungsregeln. Es enthält normalerweise Felder, die den Eigenschaften der Benutzerstruktur entsprechen.

       
{{if .Errors.Id}}{{.Errors.Id}}{{end}}
{{if .Errors.Name}}{{.Errors.Name}}{{end}}
{{if .Errors.Email}}{{.Errors.Email}}{{end}}
{{if .Errors.Age}}{{.Errors.Age}}{{end}}
{{if .Errors.BirthDate}}{{.Errors.BirthDate}}{{end}}
{{if .Pass}}
Validation success!
{{end}}
Nach dem Login kopieren

Wir verwenden die HTML-Vorlagensyntax von Go, z. B. {{if .Errors.Id}}, um dem Benutzer Fehlermeldungen anzuzeigen.

Projekt ausführen

go run main.go
Nach dem Login kopieren

Öffnen Sie den Webbrowser und gehen Sie zu http://localhost:8080

Sie finden diese Testseite.

Implement data validation in Go

Testen

Klicken Sie auf „Ungültige Daten ausfüllen“ und dann auf „Senden“, um die im Eingabeformular angezeigten Fehlermeldungen anzuzeigen.

Implement data validation in Go

Klicken Sie auf „Gültige Daten eingeben“ und dann erneut auf „Senden“. Im Eingabeformular sollte die Erfolgsmeldung der Validierung angezeigt werden.

Implement data validation in Go

Abschluss

In diesem Artikel geht es um die Implementierung der grundlegenden Datenvalidierung, die Ihnen beim Erstellen zuverlässiger und benutzerfreundlicher Anwendungen hilft. Wenden Sie diese Vorgehensweisen an, um sowohl die Robustheit als auch die Benutzerfreundlichkeit Ihrer Go-Webanwendung zu verbessern.

Quellcode: https://github.com/stackpuz/Example-Validation-Go

Erstellen Sie in wenigen Minuten eine CRUD-Web-App: https://stackpuz.com

Das obige ist der detaillierte Inhalt vonImplementieren Sie die Datenvalidierung in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!