- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel) - Kurswechsler Dropdown mit Direktnavigation - Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage - Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets - Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor - Saubere Bereinigung redundanter statischer Legacy-Sidebars |
||
|---|---|---|
| .. | ||
| aufgabe.go | ||
| index.html | ||
| musterloesung.go | ||
| README.md | ||
| test_aufgabe.go | ||
Go 13: HTTP Web Server & Routing 🌐
Willkommen zu Modul 13 des Go Cloud & Concurrency Lehrpfads!
In diesem Modul tauchst du in Lehrpfad 4 ein: Du entwickelst performante HTTP-Webdienste mit der Go-Standardbibliothek net/http, verarbeitest Query-Parameter und URL-Pfade und lernst das Testen von Web-Handlern mit httptest.
💡 1. Das Wichtigste in Kürze
Die Signatur eines Go HTTP-Handlers
func MyHandler(w http.ResponseWriter, r *http.Request) {
// 1. HTTP-Methode prüfen
if r.Method != http.MethodGet {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
// 2. Query-Parameter lesen: /search?q=golang
query := r.URL.Query().Get("q")
// 3. Statuscode setzen & Text schreiben
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, "Suche nach: %s", query)
}
Der http.ServeMux Router
Ein ServeMux verwaltet Routen. Pfade mit abschließendem Slash (z.B. /users/) fungieren als Subtree-Präfixe (matchen /users/alice, /users/bob).
🎯 Aufgaben in aufgabe.go
- TODO 1 (
HealthHandler):- Reagiert auf GET
/health. - Bei anderen HTTP-Methoden:
405 Method Not Allowed. - Bei GET: Status
200 OKmit Body"STATUS: UP".
- Reagiert auf GET
- TODO 2 (
EchoHandler):- Liest den Query-Parameter
?msg=.... - Wenn
msgfehlt oder leer ist: Status400 Bad Requestmit"missing msg parameter". - Sonst: Status
200 OKmit"ECHO: " + msg.
- Liest den Query-Parameter
- TODO 3 (
UserProfileHandler):- Extrahiert den Usernamen aus Pfad
/users/{username}(z.B.strings.TrimPrefix(r.URL.Path, "/users/")). - Wenn leer: Status
400 Bad Request("username required"). - Sonst: Status
200 OKmit"User Profile: " + username.
- Extrahiert den Usernamen aus Pfad
- TODO 4 (
SetupAPIRouter):- Erstellt einen
*http.ServeMuxund registriert:/health->HealthHandler/echo->EchoHandler/users/->UserProfileHandler
- Erstellt einen
🧪 Tests ausführen
go test -v ./...