Aufgaben-Python/courses/go/13_http_server_und_routing/aufgabe.go

66 lines
2.4 KiB
Go

package main
import (
"fmt"
"net/http"
"strings"
)
// ============================================================================
// 🚀 GO 13: HTTP SERVER, HANDLER & ROUTING
// ============================================================================
// 🎯 TODO 1: Implementiere 'HealthHandler'
// Anforderungen:
// 1. Prüfe, ob r.Method == http.MethodGet ist. Falls nicht:
// http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) und return.
// 2. Setze Status 200 OK und schreibe "STATUS: UP" in 'w'.
func HealthHandler(w http.ResponseWriter, r *http.Request) {
// TODO: Methode prüfen, 200 OK mit "STATUS: UP" antworten
}
// 🎯 TODO 2: Implementiere 'EchoHandler'
// Anforderungen:
// 1. Prüfe auf GET-Methode (sonst 405 Method Not Allowed).
// 2. Lese den Query-Parameter 'msg' via r.URL.Query().Get("msg").
// 3. Wenn 'msg' leer ist:
// http.Error(w, "missing msg parameter", http.StatusBadRequest) und return.
// 4. Bei gültigem Parameter: Schreibe "ECHO: " + msg in 'w' mit Status 200 OK.
func EchoHandler(w http.ResponseWriter, r *http.Request) {
// TODO: Query-Parameter msg validieren und zurücksenden
}
// 🎯 TODO 3: Implementiere 'UserProfileHandler'
// Endpoint für Pfade wie "/users/alice" oder "/users/bob".
// Anforderungen:
// 1. Extrahiere den Nutzernamen aus dem Pfad (z.B. strings.TrimPrefix(r.URL.Path, "/users/")).
// 2. Entferne eventuelle führende/nachfolgende Slashes mit strings.Trim(username, "/").
// 3. Wenn der resultierende Nutzername leer ist:
// http.Error(w, "username required", http.StatusBadRequest) und return.
// 4. Sonst: Status 200 OK und Body "User Profile: " + username.
func UserProfileHandler(w http.ResponseWriter, r *http.Request) {
// TODO: Username aus URL extrahieren und Profil-Text zurückgeben
}
// 🎯 TODO 4: Implementiere 'SetupAPIRouter'
// Anforderungen:
// 1. Erstelle einen neuen Mux: mux := http.NewServeMux().
// 2. Registriere:
// - "/health" -> HealthHandler
// - "/echo" -> EchoHandler
// - "/users/" -> UserProfileHandler
// 3. Gib 'mux' zurück.
func SetupAPIRouter() *http.ServeMux {
// TODO: Mux erstellen, Routen registrieren und zurückgeben
return nil
}
func main() {
fmt.Println("=== Go 13: HTTP Web Server ===")
router := SetupAPIRouter()
addr := ":8080"
fmt.Printf("Starte Webserver auf http://localhost%s ...\n", addr)
// http.ListenAndServe(addr, router)
_ = router
}