Go è un linguaggio potente e flessibile per la creazione di applicazioni web. IL netto Il pacchetto gioca un ruolo essenziale nell'ecosistema di Go.
Come la maggior parte dei linguaggi di programmazione lato server, Go viene fornito con un pacchetto HTTP per l'interazione con il protocollo HTTP. Il relativo pacchetto Go è il http pacchetto, un sottopacchetto del netto pacchetto.
Cos'è il pacchetto net/http?
IL rete/http package è una delle librerie standard in Go. Fornisce un set completo di funzioni e tipi per la creazione di client HTTP, server e altre operazioni basate su HTTP. Questi includono:
- Funzioni per effettuare richieste HTTP.
- Gestione richieste e risposte.
- Servire le richieste HTTP.
- Oggetti correlati come intestazioni e cookie.
IL rete/http Il pacchetto supporta anche la crittografia TLS/SSL, HTTP/2 e altre funzionalità avanzate che rendono il pacchetto uno strumento essenziale per gli sviluppatori Go.
Molte librerie e framework Go popolari, dal toolkit web Gorilla al framework web Echo, si basano su rete/http pacchetto.
Avvio di un server HTTP semplice
L'avvio dei server è una delle operazioni di base che devi comprendere per lavorare con il protocollo HTTP.
Ecco un programma per eseguire un semplice server in Go:
pacchetto principale
importare (
"fmt"
"rete/http"
)// handler è un tipico gestore di richiesta-risposta HTTP in Go; dettagli in seguito
funzgestore(whttp. ResponseWriter, r *http. Richiesta) {
// Fprintf formatta la stringa in un writer
fmt. Fprintf (w, "Ciao mondo!")
}
funzprincipale() {
http. HandleFunc("/", gestore)
http. AscoltaEServi(":8080", zero)
}
IL gestore La funzione è un tipico gestore di richiesta-risposta per il http pacchetto. Questa funzione scrive la stringa "Hello, World!" al writer della risposta HTTP.
Durante l'esecuzione del codice e la visita http://localhost: 8080/ in un browser web, dovresti vedere "Hello, World!" stringa visualizzata nel browser.
Gestione richieste e risposte
Puoi gestire le richieste in arrivo con il ManigliaFunc metodo del http pacchetto. IL ManigliaFunc Il metodo accetta una stringa di route e una funzione di gestione.
IL http. Richiesta method è un'istanza della richiesta in arrivo e puoi utilizzare i numerosi metodi della tua istanza per interagire con le richieste al percorso.
http. HandleFunc("/utenti", funz(whttp. ResponseWriter, r *http. Richiesta) {
interruttore R. Metodo {
caso"OTTENERE":
// gestisce la richiesta GET
caso"INVIARE":
// gestisce la richiesta POST
predefinito:
http. Errore (w, "Metodo di richiesta non valido", http. StatoMetodoNonConsentito)
}
})
Il codice sopra utilizza il http pacchetto per definire una funzione di gestore HTTP per il /users itinerario. La funzione gestore ascolta le richieste HTTP in arrivo sulla rotta e le elabora in base al metodo di richiesta (ad esempio, OTTENERE, INVIARE, eccetera.)
La funzione gestore prende il ResponseWriter E Richiesta metodi come argomenti. IL ResponseWriter è un'interfaccia che aiuta il gestore a scrivere i dati come risposta al client e il Richiesta è una struttura che contiene informazioni sulla richiesta in arrivo, come il metodo HTTP, l'URL, le intestazioni, ecc.
La funzione gestore sopra utilizza a interruttore istruzione per determinare il metodo di richiesta ed eseguire diversi blocchi di codice in base al metodo. Se il metodo è OTTENERE, il gestore gestirà il file OTTENERE richiesta. Altrimenti, il metodo è INVIARE; gestirà il INVIARE richiesta.
Se il metodo è qualcos'altro, invierà un file http. Errore con un messaggio "Metodo di richiesta non valido" e a StatusMethodNotAllowedCodice di stato HTTP al cliente.
È possibile riscrivere le stringhe al client utilizzando il Scrivere metodo dell'istanza del writer che accetta una porzione di byte di stringhe e scrive la stringa.
w. Scrivere([]byte("Ciao mondo!"))
Puoi usare il ScriviIntestazione metodo del tuo ResponseWriter instance per scrivere intestazioni al client.
w. WriteHeader (http. StatoOK)
Lavorare con il middleware HTTP
Il middleware è costituito da funzioni che intercettano le richieste HTTP in entrata per le operazioni prima che la richiesta proceda alla successiva funzione del gestore.
Ecco un esempio di registrazione della funzione del gestore del middleware in Go:
funzloggingMiddleware(prossimo http. Gestore)http.Gestore {
ritorno http. HandlerFunc(funz(whttp. ResponseWriter, r *http. Richiesta) {
// registra la richiesta
Prossimo. ServeHTTP(w, r)
// registra la risposta
})
}
IL loggingMiddleware La funzione accetta un gestore HTTP e restituisce un nuovo gestore HTTP. Il gestore HTTP restituito è una funzione anonima che accetta un writer di risposta HTTP e una richiesta HTTP. La funzione registra la richiesta e chiama il metodo ServeHTTP metodo sul Prossimo Gestore HTTP, passando il writer della risposta e la richiesta come argomenti.
Puoi gestire le funzioni del middleware con il Maniglia metodo del http pacchetto. IL Maniglia Il metodo include il percorso e la funzione middleware.
http. Maniglia("/", registrazioneMiddleware (http. HandlerFunc (gestore)))
Reindirizzamenti con il pacchetto HTTP
Il reindirizzamento è un'operazione popolare per le applicazioni web che rimandano gli utenti ad altre risorse o pagine web.
Puoi reindirizzare a un'altra pagina web utilizzando il Reindirizzare metodo del http pacchetto.
http. Reindirizzamento (w, r, " http://example.com", http. StatusMovedPermanently)
IL Reindirizzare metodo prende in ResponseWriter E Richiesta istanze, l'URL della nuova pagina e un codice di stato per il reindirizzamento.
Puoi creare API complesse in Go
IL http package è uno strumento potente e flessibile per la creazione di API complesse. Puoi utilizzare la ricca libreria standard di Go e altri potenti pacchetti di terze parti per aggiungere funzionalità alle tue API, come la connettività del database e il supporto per diversi web quadri.
Con Go, puoi creare API scalabili e altamente performanti che gestiscono con facilità un traffico di richieste significativo e complesse attività di elaborazione dei dati.