Go er et kraftig og fleksibelt språk for å bygge webapplikasjoner. De nett pakken spiller en viktig rolle i Gos økosystem.
Som de fleste programmeringsspråk på serversiden, leveres Go med en HTTP-pakke for samhandling med HTTP-protokollen. Den relevante Go-pakken er http pakke, en underpakke av nett pakke.
Hva er net/http-pakken?
De net/http pakken er et av standardbibliotekene i Go. Den gir et komplett sett med funksjoner og typer for å bygge HTTP-klienter, servere og andre HTTP-baserte operasjoner. Disse inkluderer:
- Funksjoner for å lage HTTP-forespørsler.
- Håndtering av forespørsler og svar.
- Leverer HTTP-forespørsler.
- Relaterte objekter som overskrifter og informasjonskapsler.
De net/http pakken støtter også TLS/SSL-kryptering, HTTP/2 og andre avanserte funksjoner som gjør pakken til et viktig verktøy for Go-utviklere.
Mange populære Go-biblioteker og -rammeverk, fra Gorilla-nettverktøysettet til Echo-nettrammeverket, bygger på toppen av
net/http pakke.Starte opp en enkel HTTP-server
Oppstart av servere er en av de grunnleggende operasjonene du trenger å forstå for å jobbe med HTTP-protokollen.
Her er et program for å kjøre en enkel server i Go:
pakke hoved-
import (
"fmt"
"net/http"
)// handler er en typisk HTTP request-response behandler i Go; detaljer senere
funchandler(w http. ResponseWriter, r *http. Be om) {
// Fprintf formaterer strengen til en forfatter
fmt. Fprintf (w, "Hei Verden!")
}
funchoved-() {
http. HandleFunc("/", handler)
http. ListenAndServe(":8080", null)
}
De handler funksjonen er en typisk forespørsel-svar-behandler for http pakke. Denne funksjonen skriver strengen "Hello, World!" til HTTP-svarskriveren.
På å kjøre koden og besøke http://localhost: 8080/ i en nettleser bør du se "Hello, World!" streng som vises i nettleseren din.
Håndtering av forespørsler og svar
Du kan håndtere innkommende forespørsler med HandleFunc metoden for http pakke. De HandleFunc metoden tar inn en rutestreng og en behandlerfunksjon.
De http. Be om metoden er en forekomst av den innkommende forespørselen, og du kan bruke de mange metodene for forekomsten din for å samhandle med forespørslene til ruten.
http. HandleFunc("/brukere", func(w http. ResponseWriter, r *http. Be om) {
bytte om r. Metode {
sak"FÅ":
// håndtere GET-forespørsel
sak"POST":
// håndtere POST-forespørsel
misligholde:
http. Feil (w, "Ugyldig forespørselsmetode", http. StatusMethodNotAllowed)
}
})
Koden ovenfor bruker http pakken for å definere en HTTP-behandlerfunksjon for /users rute. Behandlerfunksjonen lytter etter innkommende HTTP-forespørsler på ruten og behandler dem basert på forespørselsmetoden (f.eks. FÅ, POST, etc.)
Håndterfunksjonen tar ResponseWriter og Be om metoder som argumenter. De ResponseWriter er et grensesnitt som hjelper behandleren med å skrive data som et svar til klienten, og Be om er en struktur som inneholder informasjon om den innkommende forespørselen, for eksempel HTTP-metoden, URL, overskrifter osv.
Behandlerfunksjonen ovenfor bruker en bytte om setning for å bestemme forespørselsmetoden og kjøre forskjellige kodeblokker basert på metoden. Hvis metoden er FÅ, vil behandleren håndtere FÅ be om. Ellers er metoden POST; den vil håndtere POST be om.
Hvis metoden er noe annet, vil den sende en http. Feil med en "Ugyldig forespørselsmetode"-melding og en StatusMethodNotAllowedHTTP-statuskode til klienten.
Du kan skrive tilbake strenger til klienten ved å bruke Skrive metoden for skribentforekomsten din som tar inn en bytebit av strenger og skriver strengen.
w. Skrive([]byte("Hei Verden!"))
Du kan bruke WriteHeader metoden din ResponseWriter forekomst for å skrive overskrifter til klienten.
w. WriteHeader (http. StatusOK)
Arbeide med HTTP-mellomvare
Mellomvare består av funksjoner som fanger opp innkommende HTTP-forespørsler for operasjoner før forespørselen fortsetter til neste behandlerfunksjon.
Her er et eksempel på logging av mellomvarehåndteringsfunksjonen i Go:
funclogging mellomvare(neste http. Handler)http.Handler {
komme tilbake http. HandlerFunc(func(w http. ResponseWriter, r *http. Be om) {
// logg forespørselen
neste. Vis HTTP(w, r)
// logg svaret
})
}
De logging mellomvare funksjonen tar inn en HTTP-behandler og returnerer en ny HTTP-behandler. Den returnerte HTTP-behandleren er en anonym funksjon som tar inn en HTTP-svarskriver og en HTTP-forespørsel. Funksjonen logger forespørselen og kaller opp Server HTTP metode på neste HTTP-behandler, sender inn svarskriveren og forespørselen som argumenter.
Du kan håndtere mellomvarefunksjoner med Håndtak metoden for http pakke. De Håndtak metoden tar inn ruten og mellomvarefunksjonen.
http. Håndtak("/", loggingMiddleware (http. HandlerFunc (handler)))
Omdirigeringer med HTTP-pakken
Omdirigering er en populær operasjon for nettapplikasjoner som henviser brukere til andre ressurser eller nettsider.
Du kan omdirigere til en annen nettside ved å bruke Omdirigere metoden for http pakke.
http. Omdirigere (w, r, " http://example.com", http. Status Flyttet Permanent)
De Omdirigere metoden tar inn ResponseWriter og Be om forekomster, den nye sidens URL og en statuskode for viderekoblingen.
Du kan bygge komplekse API-er på farten
De http pakken er et kraftig og fleksibelt verktøy for å bygge komplekse APIer. Du kan bruke Gos rike standardbibliotek og andre kraftige tredjepartspakker for å legge til funksjonalitet til API-ene dine, for eksempel databasetilkobling og støtte for forskjellige web rammer.
Med Go kan du bygge skalerbare API-er med høy ytelse som enkelt håndterer betydelig forespørselstrafikk og komplekse databehandlingsoppgaver.