Sto cercando di capire il modo migliore per gestire le richieste a /
e solo a /
in Go e gestire diversi metodi in modi diversi. Qui è la migliore che è venuta in mente:Come posso gestire le richieste http di metodi diversi su/in Go?
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))
}
È questo idiomatica Go? È questo il meglio che posso fare con lo standard http lib? Preferirei fare qualcosa come http.HandleGet("/", handler)
come espresso o Sinatra. C'è una buona struttura per scrivere semplici servizi REST? web.go sembra attraente ma sembra stagnante.
Grazie per il vostro consiglio.
potresti essere interessato a http://www.gorillatoolkit.org/pkg/mux se stai solo cercando un'astrazione di routing. – dskinner
+1. mux o http://www.gorillatoolkit.org/pkg/pat sono eccellenti per astrarre questo. – minikomi