Ich versuche herauszufinden, wie Anfragen an /
und nur /
in Go am besten verarbeitet werden können, und verschiedene Methoden auf unterschiedliche Weise zu behandeln. Hier ist das Beste, was ich mir ausgedacht habe:
package main
import (
"fmt"
"html"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}
if r.Method == "GET" {
fmt.Fprintf(w, "GET, %q", html.EscapeString(r.URL.Path))
} else if r.Method == "POST" {
fmt.Fprintf(w, "POST, %q", html.EscapeString(r.URL.Path))
} else {
http.Error(w, "Invalid request method.", 405)
}
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
Ist das idiomatisch Go? Ist dies das Beste, was ich mit der Standard-http-Bibliothek machen kann? Ich würde viel lieber so etwas wie http.HandleGet("/", handler)
Express oder Sinatra machen. Gibt es einen guten Rahmen für das Schreiben einfacher REST-Services? web.go sieht attraktiv aus, stagniert aber.
Danke für deinen Rat.