En introduktion till Gos HTTP-paket

En introduktion till Gos HTTP-paket
Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Go är ett kraftfullt och flexibelt språk för att bygga webbapplikationer. De netto paketet spelar en viktig roll i Gos ekosystem.





Som de flesta programmeringsspråk på serversidan, levereras Go med ett HTTP-paket för interaktion med HTTP-protokollet. Det relevanta Go-paketet är http paket, ett underpaket av netto paket.





Vad är net/http-paketet?

  http-paketöversikt

De net/http paketet är ett av standardbiblioteken i Go. Den tillhandahåller en komplett uppsättning funktioner och typer för att bygga HTTP-klienter, servrar och andra HTTP-baserade operationer. Dessa inkluderar:





hur lösenordsskydda en tummenhet
  • Funktioner för att göra HTTP-förfrågningar.
  • Hantera förfrågningar och svar.
  • Betjänar HTTP-förfrågningar.
  • Relaterade objekt som rubriker och cookies.

De net/http paketet stöder också TLS/SSL-kryptering, HTTP/2 och andra avancerade funktioner som gör paketet till ett viktigt verktyg för Go-utvecklare.

Många populära Go-bibliotek och ramverk, från Gorilla webbverktyg till Echo webbramverk, bygger ovanpå net/http paket.



Starta en enkel HTTP-server

Att starta servrar är en av de grundläggande operationerna du behöver förstå för att arbeta med HTTP-protokollet.

Här är ett program för att kör en enkel server i Go :





 package main 

import (
    "fmt"
    "net/http"
)

// handler is a typical HTTP request-response handler in Go; details later
func handler(w http.ResponseWriter, r *http.Request) {
    // Fprintf formats the string to a writer
    fmt.Fprintf(w, "Hello, World!")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

De hanterare funktion är en typisk begäran-svar-hanterare för http paket. Denna funktion skriver strängen 'Hello, World!' till HTTP-svarsskrivaren.

På att köra koden och besöka http://localhost:8080/ i en webbläsare bör du se 'Hello, World!' sträng som visas i din webbläsare.





  resultatet av att starta en server

Hantera förfrågningar och svar

Du kan hantera inkommande förfrågningar med HandleFunc metod för http paket. De HandleFunc metod tar in en ruttsträng och en hanterarfunktion.

De http.Begäran metod är en instans av den inkommande begäran, och du kan använda de många metoderna i din instans för att interagera med förfrågningarna till rutten.

 http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) { 
    switch r.Method {
    case "GET":
        // handle GET request
    case "POST":
        // handle POST request
    default:
        http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
    }
})

Koden ovan använder http paket för att definiera en HTTP-hanterarfunktion för /användare rutt. Hanterarfunktionen lyssnar efter inkommande HTTP-förfrågningar på rutten och bearbetar dem baserat på förfrågningsmetoden (t.ex. SKAFFA SIG , POSTA , etc.)

Hanterarfunktionen tar ResponseWriter och Begäran metoder som argument. De ResponseWriter är ett gränssnitt som hjälper hanteraren att skriva data som ett svar till klienten, och Begäran är en struktur som innehåller information om den inkommande begäran, såsom HTTP-metoden, URL, rubriker, etc.

Hanterarfunktionen ovan använder en växla för att bestämma begäranmetoden och köra olika kodblock baserat på metoden. Om metoden är SKAFFA SIG , hanterar hanteraren SKAFFA SIG begäran. Annars är metoden POSTA; det kommer att hantera POSTA begäran.

Om metoden är något annat kommer den att skicka en http.Fel med meddelandet 'Invalid request method' och ett StatusMethodNotAllowed HTTP-statuskod till klienten.

Du kan skriva tillbaka strängar till klienten med hjälp av Skriva metod för din writer-instans som tar in en bit byte av strängar och skriver strängen.

 w.Write([]byte("Hello, World!")) 

Du kan använda WriteHeader din metod ResponseWriter instans för att skriva rubriker till klienten.

 w.WriteHeader(http.StatusOK) 

Arbeta med HTTP Middleware

Middleware består av funktioner som fångar upp inkommande HTTP-förfrågningar för operationer innan begäran fortsätter till nästa hanterarfunktion.

Här är ett exempel på hur man loggar mellanvaruhanterarens funktion i Go:

 func loggingMiddleware(next http.Handler) http.Handler { 
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // log the request
        next.ServeHTTP(w, r)
        // log the response
    })
}

De loggning Mellanprogram funktionen tar in en HTTP-hanterare och returnerar en ny HTTP-hanterare. Den returnerade HTTP-hanteraren är en anonym funktion som tar in en HTTP-svarsskrivare och en HTTP-förfrågan. Funktionen loggar begäran och anropar ServeraHTTP metod på Nästa HTTP-hanterare, skickar in svarsskrivaren och begäran som argument.

Du kan hantera middleware-funktioner med Hantera metod för http paket. De Hantera metoden tar in rutten och middleware-funktionen.

 http.Handle("/", loggingMiddleware(http.HandlerFunc(handler))) 

Omdirigeringar med HTTP-paketet

Omdirigering är en populär operation för webbapplikationer som hänvisar användare till andra resurser eller webbsidor.

Du kan omdirigera till en annan webbsida med hjälp av Dirigera om metod för http paket.

 http.Redirect(w, r, "http://example.com", http.StatusMovedPermanently) 

De Dirigera om metoden tar in ResponseWriter och Begäran instanser, den nya webbadressen till sidan och en statuskod för omdirigeringen.

Du kan bygga komplexa API:er i Go

De http paket är ett kraftfullt och flexibelt verktyg för att bygga komplexa API:er. Du kan använda Gos rika standardbibliotek och andra kraftfulla tredjepartspaket för att lägga till funktionalitet till dina API:er, såsom databasanslutning och stöd för olika webbramverk.

Med Go kan du bygga skalbara, högpresterande API:er som enkelt hanterar betydande förfrågningstrafik och komplexa databearbetningsuppgifter.

måste du ha en internetleverantör för att få wifi?