Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Go er et kraftfuldt og fleksibelt sprog til at bygge webapplikationer. Det net pakken spiller en væsentlig rolle i Go's økosystem.

Som de fleste programmeringssprog på serversiden, leveres Go med en HTTP-pakke til interaktion med HTTP-protokollen. Den relevante Go-pakke er http pakke, en underpakke af net pakke.

Hvad er net/http-pakken?

Det net/http pakke er et af standardbibliotekerne i Go. Det giver et komplet sæt funktioner og typer til at bygge HTTP-klienter, servere og andre HTTP-baserede operationer. Disse omfatter:

  • Funktioner til at lave HTTP-anmodninger.
  • Håndtering af forespørgsler og svar.
  • Leverer HTTP-anmodninger.
  • Relaterede objekter såsom overskrifter og cookies.

Det net/http pakken understøtter også TLS/SSL-kryptering, HTTP/2 og andre avancerede funktioner, der gør pakken til et vigtigt værktøj for Go-udviklere.

Mange populære Go-biblioteker og -frameworks, fra Gorilla-webværktøjssættet til Echo-webframeworket, bygger oven på

instagram viewer
net/http pakke.

Opstart af en simpel HTTP-server

Opstart af servere er en af ​​de grundlæggende handlinger, du skal forstå for at arbejde med HTTP-protokollen.

Her er et program til køre en simpel server i Go:

pakke vigtigste

importere (
"fmt"
"net/http"
)

// handler er en typisk HTTP request-response handler i Go; detaljer senere
funchandler(w http. ResponseWriter, r *http. Anmodning) {
// Fprintf formaterer strengen til en forfatter
fmt. Fprintf (w, "Hej Verden!")
}

funcvigtigste() {
http. HandleFunc("/", handler)
http. LytOgServe(":8080", nul)
}

Det handler funktion er en typisk anmodning-svar-handler for http pakke. Denne funktion skriver strengen "Hello, World!" til HTTP-svarskriveren.

På at køre koden og besøge http://localhost: 8080/ i en webbrowser bør du se "Hej, verden!" streng vist i din browser.

Håndtering af anmodninger og svar

Du kan håndtere indgående forespørgsler med HandleFunc metoden til http pakke. Det HandleFunc metoden tager en rutestreng og en handlerfunktion ind.

Det http. Anmodning metode er en forekomst af den indgående anmodning, og du kan bruge de mange metoder for din forekomst til at interagere med anmodningerne til ruten.

http. HandleFunc("/brugere", func(w http. ResponseWriter, r *http. Anmodning) {
kontakt r. Metode {
sag"FÅ":
// håndtere GET-anmodning
sag"STOLPE":
// håndtere POST-anmodning
Standard:
http. Fejl (w, "Ugyldig anmodningsmetode", http. StatusMethodNotAllowed)
}
})

Ovenstående kode bruger http pakke til at definere en HTTP-håndteringsfunktion for /users rute. Behandlerfunktionen lytter efter indgående HTTP-anmodninger på ruten og behandler dem baseret på anmodningsmetoden (f.eks. , STOLPE, etc.)

Håndterfunktionen tager ResponseWriter og Anmodning metoder som argumenter. Det ResponseWriter er en grænseflade, der hjælper behandleren med at skrive data som et svar til klienten, og Anmodning er en struktur, der indeholder information om den indgående anmodning, såsom HTTP-metoden, URL, overskrifter osv.

Håndterfunktionen ovenfor bruger en kontakt sætning for at bestemme anmodningsmetoden og køre forskellige kodeblokke baseret på metoden. Hvis metoden er , vil handleren håndtere anmodning. Ellers er metoden STOLPE; det vil håndtere STOLPE anmodning.

Hvis metoden er noget andet, vil den sende en http. Fejl med en "Ugyldig anmodningsmetode"-meddelelse og en StatusMethodNotAllowedHTTP-statuskode til klienten.

Du kan skrive tilbage strenge til klienten ved hjælp af Skrive metode for din writer-instans, der tager et byte-stykke af strenge ind og skriver strengen.

w. Skrive([]byte("Hej Verden!"))

Du kan bruge WriteHeader din metode ResponseWriter forekomst til at skrive overskrifter til klienten.

w. WriteHeader (http. Status OK)

Arbejde med HTTP Middleware

Middleware består af funktioner, der opfanger indgående HTTP-anmodninger til operationer, før anmodningen fortsætter til den næste behandlerfunktion.

Her er et eksempel på logning af middleware-håndteringsfunktionen i Go:

funclogning af Middleware(næste http. Håndter)http.Handler {
Vend tilbage http. HandlerFunc(func(w http. ResponseWriter, r *http. Anmodning) {
// log anmodningen
Næste. ServerHTTP(w, r)
// log svaret
})
}

Det logning af Middleware funktionen tager en HTTP-handler ind og returnerer en ny HTTP-handler. Den returnerede HTTP-handler er en anonym funktion, der tager en HTTP-svarskriver og en HTTP-anmodning ind. Funktionen logger anmodningen og kalder den Server HTTP metode på Næste HTTP-handler, sender svarskriveren og anmodningen som argumenter.

Du kan håndtere middleware-funktioner med Håndtere metoden til http pakke. Det Håndtere metoden tager ruten og middleware-funktionen ind.

http. Håndtere("/", loggingMiddleware (http. HandlerFunc (handler)))

Omdirigerer med HTTP-pakken

Omdirigering er en populær operation for webapplikationer, der henviser brugere til andre ressourcer eller websider.

Du kan omdirigere til en anden webside ved hjælp af Omdirigere metoden til http pakke.

http. Omdiriger (w, r, " http://example.com", http. StatusFlyttet Permanent)

Det Omdirigere metode tager i ResponseWriter og Anmodning forekomster, den nye side-URL og en statuskode for omdirigeringen.

Du kan bygge komplekse API'er i Go

Det http pakke er et kraftfuldt og fleksibelt værktøj til at bygge komplekse API'er. Du kan bruge Go's rige standardbibliotek og andre kraftfulde tredjepartspakker for at tilføje funktionalitet til dine API'er, såsom databaseforbindelse og understøttelse af forskellige web rammer.

Med Go kan du bygge skalerbare, højtydende API'er, der nemt håndterer betydelig anmodningstrafik og komplekse databehandlingsopgaver.