Een inleiding tot het HTTP-pakket van Go

Een inleiding tot het HTTP-pakket van Go
Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen. Lees verder.

Go is een krachtige en flexibele taal voor het bouwen van webapplicaties. De netto- pakket speelt een essentiële rol in het ecosysteem van Go.





Zoals de meeste programmeertalen aan de serverzijde, wordt Go geleverd met een HTTP-pakket voor interactie met het HTTP-protocol. Het betreffende Go-pakket is de http pakket, een subpakket van de netto- pakket.





Wat is het net/http-pakket?

  http-pakket overzicht

De net/http pakket is een van de standaardbibliotheken in Go. Het biedt een volledige set functies en typen voor het bouwen van HTTP-clients, servers en andere op HTTP gebaseerde bewerkingen. Deze omvatten:





  • Functies voor het doen van HTTP-verzoeken.
  • Afhandelen van verzoeken en reacties.
  • HTTP-aanvragen verwerken.
  • Gerelateerde objecten zoals headers en cookies.

De net/http pakket ondersteunt ook TLS/SSL-codering, HTTP/2 en andere geavanceerde functies waardoor het pakket een essentiële tool is voor Go-ontwikkelaars.

hoe de helderheid van Windows 10 te verlagen

Veel populaire Go-bibliotheken en -frameworks, van de Gorilla-webtoolkit tot het Echo-webframework, bouwen bovenop de net/http pakket.



Een eenvoudige HTTP-server opstarten

Het opstarten van servers is een van de basisbewerkingen die u moet begrijpen om met het HTTP-protocol te werken.

Hier is een programma om voer een eenvoudige server uit in 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 behandelaar functie is een typische verzoek-antwoordhandler voor de http pakket. Deze functie schrijft de string 'Hello, World!' naar de HTTP-antwoordschrijver.

Over het uitvoeren van de code en het bezoeken http://localhost:8080/ in een webbrowser zou je de 'Hello, World!' tekenreeks die in uw browser wordt weergegeven.





  gevolg van het opstarten van een server

Afhandelen van verzoeken en reacties

U kunt inkomende verzoeken afhandelen met de HandgreepFunc methode van de http pakket. De HandgreepFunc methode neemt een routetekenreeks en een handlerfunctie in zich op.

De http.Verzoek methode is een instantie van het inkomende verzoek en u kunt de talrijke methoden van uw instantie gebruiken om te communiceren met de verzoeken aan de route.

muis scroll op en neer probleem
 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)
    }
})

De bovenstaande code maakt gebruik van de http pakket om een ​​HTTP-handlerfunctie te definiëren voor het /gebruikers route. De handlerfunctie luistert naar inkomende HTTP-verzoeken op de route en verwerkt deze op basis van de verzoekmethode (bijv. KRIJGEN , NA , enz.)

De handlerfunctie neemt de ReactieSchrijver en Verzoek methoden als argumenten. De ReactieSchrijver is een interface die de handler helpt bij het schrijven van gegevens als reactie op de client, en de Verzoek is een structuur die informatie bevat over het inkomende verzoek, zoals de HTTP-methode, URL, headers, enz.

De handlerfunctie hierboven gebruikt a schakelaar instructie om de aanvraagmethode te bepalen en verschillende codeblokken uit te voeren op basis van de methode. Als de methode is KRIJGEN , zal de handler de KRIJGEN verzoek. Anders is de methode NA; het zal omgaan met de NA verzoek.

Als de methode iets anders is, zal het een HTTP fout met een bericht 'Ongeldige aanvraagmethode' en een StatusMethodeNiet Toegestaan HTTP-statuscode naar de klant.

U kunt tekenreeksen terugschrijven naar de client met behulp van de Schrijven methode van uw schrijverinstantie die een bytesegment van tekenreeksen opneemt en de tekenreeks schrijft.

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

U kunt de SchrijvenHeader methode van je ReactieSchrijver instantie om headers naar de client te schrijven.

 w.WriteHeader(http.StatusOK) 

Werken met HTTP-middleware

Middleware bestaat uit functies die inkomende HTTP-verzoeken voor bewerkingen onderscheppen voordat het verzoek doorgaat naar de volgende afhandelingsfunctie.

usb type a vs type c

Hier is een voorbeeld van het loggen van de middleware-handlerfunctie in 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 loggingMiddleware functie neemt een HTTP-handler in en retourneert een nieuwe HTTP-handler. De geretourneerde HTTP-handler is een anonieme functie die een HTTP-antwoordschrijver en een HTTP-verzoek opneemt. De functie registreert het verzoek en roept het ServeHTTP methode op de De volgende HTTP-handler, geeft de antwoordschrijver en het verzoek door als argumenten.

U kunt middleware-functies aan met de Hendel methode van de http pakket. De Hendel methode neemt de route en de middleware-functie over.

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

Omleidingen met het HTTP-pakket

Omleiden is een populaire bewerking voor webtoepassingen die gebruikers doorverwijzen naar andere bronnen of webpagina's.

U kunt doorverwijzen naar een andere webpagina met behulp van de Omleiden methode van de http pakket.

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

De Omleiden methode neemt de ReactieSchrijver en Verzoek instanties, de nieuwe pagina-URL en een statuscode voor de omleiding.

U kunt complexe API's bouwen in Go

De http pakket is een krachtige en flexibele tool voor het bouwen van complexe API's. U kunt de rijke standaardbibliotheek van Go en andere krachtige pakketten van derden gebruiken om functionaliteit aan uw API's toe te voegen, zoals databaseconnectiviteit en ondersteuning voor verschillende webframeworks.

Met Go kunt u schaalbare, zeer krachtige API's bouwen die met gemak aanzienlijk verzoekverkeer en complexe gegevensverwerkingstaken afhandelen.