lab-development-imb/web/07/labor/loesungen_07/Webserver-Programm/main.go

83 lines
2.0 KiB
Go

package main
import (
"fmt"
"net/http"
)
// Handler Funktion anlegen
// w = Antwort an Browser, r=Anfrage vom Client
func workshopHandler(w http.ResponseWriter, r *http.Request) {
// Prüfen auf POST, Fehler falls andere Methode
if r.Method != http.MethodPost {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
// ließt den Body des Requests ein und befüllt FormFalue(), sofern keine Fehler auftauchen
err := r.ParseForm()
if err != nil {
http.Error(w, "Fehler beim Einlesen des Formulars", http.StatusBadRequest)
}
// Wenn Felder die als required markiert wurden leer sind: Fehlermeldung
vorname := r.FormValue("vorname")
if vorname == "" {
http.Error(w, "Vorname fehlt", http.StatusBadRequest)
return
}
nachname := r.FormValue("nachname")
if nachname == "" {
http.Error(w, "Nachname fehlt", http.StatusBadRequest)
return
}
email := r.FormValue("email")
if email == "" {
http.Error(w, "E-Mail fehlt", http.StatusBadRequest)
return
}
handy := r.FormValue("handy")
// Checkboxen auslesen
agb := r.FormValue("agb")
if agb == "" {
http.Error(w, "AGBs müssen akzeptiert werden", http.StatusBadRequest)
return
}
// newsletter und equipment beliben leer, wenn nicht angehakt
newsletter := r.FormValue("newsletter")
equipment := r.FormValue("equipment")
// Radio Buttons
format := r.FormValue("format")
if format == "" {
http.Error(w, "Wählen sie ein Kursformat", http.StatusBadRequest)
return
}
// Dropdown
session := r.FormValue("session")
if session == "" {
http.Error(w, "Wählen sie eine Zeit aus", http.StatusBadRequest)
return
}
fmt.Println("Vorname: ", vorname)
fmt.Println("Nachname: ", nachname)
fmt.Println("E-Mail: : ", email)
fmt.Println("Telefon: ", handy)
fmt.Fprintln(w, "POST Request funktioniert")
}
func main() {
// Anfrage an Pfad in HTML /registrierung, worshop Handler wird aufgerufen
http.HandleFunc("/registrierung", workshopHandler)
fmt.Println("Server läuft auf http://localhost:8080")
http.ListenAndServe(":8080", nil)
}