66 lines
2.4 KiB
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
|
|
}
|