Implementet the webserver exercise

main
Oliver Stolle 2026-05-04 21:11:31 +00:00
parent 0ee9b3151c
commit f090741529
1 changed files with 93 additions and 0 deletions

View File

@ -0,0 +1,93 @@
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:<br>Vorname: %s<br>Nachname: %s<br>E-Mail: %s<br>Telefon: %s<br>Session: %v<br>Agb: %s<br>Newsletter: %s<br>Equipment: %s<br>Format: %v<br>",
vorname, nachname, email, telefon, sessions, agb, newsletter, equipment, format)
w.Write([]byte(response))
}
func main() {
var ser ServerHandler
http.ListenAndServe("localhost:8080", ser)
}