Mi chiedevo se dovrei creare un nuovo ServeMux e registrarlo allo http.Server
o dovrei invocare direttamente http.HandleFunc
e http.Handler
?Devo usare ServeMux o http direttamente in golang
Penso che il percorso con un ServeMux sia migliore perché lo http.HandleFunc
mette ovviamente in crisi lo stato globale del pacchetto HTTP, che è considerato una cattiva pratica in Go. Tuttavia, in molti tutorial, anche quelli ufficiali, vedo spesso il percorso http.HandleFunc
in uso.
Questo mi fa chiedere: perché si dovrebbe usare http.HandleFunc
quando c'è un ServeMux
? So che ServeMux ha alcuni vantaggi (ad es. Puoi annidarlo senza ripetere il prefisso tutto il tempo) ma mi chiedo perché dovrei mai scegliere http.HandleFunc
su Multiplexer, specialmente dal momento che lo HandleFunc
usa uno ServeMux
internamente.
Modifica: come promesso nei commenti, ho chiesto di deprecare le funzioni aggiuntive (e inutili IMO) su Golang-dev e hanno risposto di no (beh, a persona ha detto di no).
(Volevo anche dire che questa è una buona domanda, e utile per gli altri in futuro, visto che è stata presentata in precedenza) – elithrar
elithrar: è per questo che l'ho chiesto qui. Non ho trovato nulla su Google. Imo, http.HandleFunc' e 'http.Handle' dovrebbero essere deprecati, quindi. L'uso di un 'Mux' e' Server' aggiunge solo altre 2 linee e l'ambiguità è sempre negativa, specialmente se la via più ovvia è la "cattiva via". – Matt3o12
La promessa di compatibilità con Go1 non consente la rimozione, quindi siamo "bloccati" con loro fino a "2.0" (che è molto lontano - anni). – elithrar