package main import ( "encoding/json" "fmt" "net/http" ) type ServerHandler int type anmeldung struct { Vorname string `json:"vorname"` Nachname string `json:"nachname"` Email string `json:"email"` Telefon string `json:"telefon"` Sessions []string `json:"sessions"` Agb string `json:"agb"` Newsletter string `json:"newsletter"` Equipment string `json:"equipment"` Format []string `json:"format"` } func (formHandler ServerHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Origin", "*") //What is that for??? w.Header().Set("Access-Control-Allow-Methods", "POST") w.Header().Set("Access-Control-Allow-Headers", "Content-Type") if r.Method == http.MethodOptions { w.WriteHeader(http.StatusOK) return } if r.Method != http.MethodPost { http.Error(w, "Only POST requests are allowed", http.StatusMethodNotAllowed) return } var vorname string var nachname string var email string var telefon string var sessions []string var agb string var newsletter string var equipment string var format []string var anmeldung anmeldung if err := json.NewDecoder(r.Body).Decode(&anmeldung); err != nil { vorname = anmeldung.Vorname nachname = anmeldung.Nachname email = anmeldung.Email telefon = anmeldung.Telefon sessions = anmeldung.Sessions agb = anmeldung.Agb newsletter = anmeldung.Newsletter equipment = anmeldung.Equipment format = anmeldung.Format } else { if err := r.ParseForm(); err != nil { http.Error(w, "Fehler beim Parsen des Formulars", http.StatusBadRequest) return } if len(r.PostForm) == 0 { http.Error(w, "Kein POST-Formular gesendet", http.StatusBadRequest) return } vorname = r.PostForm.Get("vorname") nachname = r.PostForm.Get("nachname") email = r.PostForm.Get("email") telefon = r.PostForm.Get("telefon") sessions = r.PostForm["sessions"] agb = r.PostForm.Get("agb") newsletter = r.PostForm.Get("newsletter") equipment = r.PostForm.Get("equipment") format = r.PostForm["format"] } response := fmt.Sprintf("Anmeldung erfolgreich! Ihre Anmeldedaten lauten:
Vorname: %s
Nachname: %s
E-Mail: %s
Telefon: %s
Session: %v
Agb: %s
Newsletter: %s
Equipment: %s
Format: %v
", vorname, nachname, email, telefon, sessions, agb, newsletter, equipment, format) w.Write([]byte(response)) } func main() { var ser ServerHandler http.ListenAndServe("localhost:8080", ser) }