lab-development-imb/web/07/demos/04_post_request_http.go

48 lines
1.1 KiB
Go

package main
import (
"fmt"
"net/http"
)
type formExampleHandler int
func (formHandler formExampleHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Only POST requests are allowed", http.StatusMethodNotAllowed)
return
}
// Formulardaten parsen und Überprüfen, ob ungültige Formulardaten gesendet wurde
if err := r.ParseForm(); err != nil {
http.Error(w, "Fehler beim Parsen des Formulars", http.StatusBadRequest)
return
}
// Überprüfen, ob leeres Formular gesendet wurde
if len(r.PostForm) == 0 {
http.Error(w, "Kein POST-Formular gesendet", http.StatusBadRequest)
return
}
// Zugriff auf PostForm-Daten
// string mit Wert des Feldes "name"
name := r.PostForm.Get("name")
// []string mit allen ausgewählten Werten der Checkbox "hobby"
hobbies := r.PostForm["hobby"]
// Ausgabe der Werte
fmt.Fprintf(w, "Name: %s\n", name)
fmt.Fprintf(w, "Hobbies:\n")
for _, h := range hobbies {
fmt.Fprintf(w, "- %s\n", h)
}
}
func main() {
var r formExampleHandler
http.ListenAndServe("localhost:8080", r)
}