Johdatus Go:n HTTP-pakettiin

Johdatus Go:n HTTP-pakettiin
Kaltaisesi lukijat auttavat tukemaan MUO:ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Go on tehokas ja joustava kieli verkkosovellusten rakentamiseen. The netto paketilla on olennainen rooli Go:n ekosysteemissä.





Kuten useimmat palvelinpuolen ohjelmointikielet, Go toimitetaan HTTP-paketin kanssa vuorovaikutusta varten HTTP-protokollan kanssa. Asiaankuuluva Go-paketti on http paketti, alapaketti netto paketti.





kuinka löytää koiria myytäväksi

Mikä on net/http-paketti?

  http paketin yleiskatsaus

The net/http paketti on yksi Go:n vakiokirjastoista. Se tarjoaa täyden valikoiman toimintoja ja tyyppejä HTTP-asiakkaiden, -palvelimien ja muiden HTTP-pohjaisten toimintojen rakentamiseen. Nämä sisältävät:





  • Toiminnot HTTP-pyyntöjen tekemiseen.
  • Pyyntöjen ja vastausten käsittely.
  • HTTP-pyyntöjen palveleminen.
  • Aiheeseen liittyvät objektit, kuten otsikot ja evästeet.

The net/http paketti tukee myös TLS/SSL-salausta, HTTP/2:ta ja muita edistyneitä ominaisuuksia, mikä tekee paketista olennaisen työkalun Go-kehittäjille.

Monet suositut Go-kirjastot ja -kehykset Gorilla-verkkotyökalupakista Echo-verkkokehykseen perustuvat net/http paketti.



Yksinkertaisen HTTP-palvelimen käynnistäminen

Palvelinten käynnistäminen on yksi perustoiminnoista, jotka sinun on ymmärrettävä voidaksesi käyttää HTTP-protokollaa.

Tässä on ohjelma käytä yksinkertaista palvelinta Gossa :





 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)
}

The käsittelijä -toiminto on tyypillinen pyyntö-vastauskäsittelijä http paketti. Tämä funktio kirjoittaa merkkijonon 'Hei, maailma!' HTTP-vastauksen kirjoittajalle.

Koodin suorittamisesta ja vierailusta http://localhost:8080/ Web-selaimessa sinun pitäisi nähdä 'Hei, maailma!' merkkijono näkyy selaimessasi.





  palvelimen käynnistämisen seurauksena

Pyyntöjen ja vastausten käsittely

Voit käsitellä saapuvia pyyntöjä HandleFunc menetelmä http paketti. The HandleFunc menetelmä ottaa reittimerkkijonon ja käsittelijän funktion.

The http.Pyyntö Metodi on saapuvan pyynnön ilmentymä, ja voit käyttää ilmentymäsi lukuisia menetelmiä vuorovaikutuksessa reitin pyyntöjen kanssa.

 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)
    }
})

Yllä oleva koodi käyttää http paketti HTTP-käsittelijän funktion määrittämiseen /käyttäjät reitti. Käsittelijätoiminto kuuntelee saapuvia HTTP-pyyntöjä reitillä ja käsittelee ne pyyntömenetelmän perusteella (esim. SAADA , LÄHETTÄÄ , jne.)

Käsittelijätoiminto ottaa ResponseWriter ja Pyyntö menetelmiä argumentteina. The ResponseWriter on käyttöliittymä, joka auttaa käsittelijää kirjoittamaan tietoja vastauksena asiakkaalle, ja Pyyntö on rakenne, joka sisältää tietoa saapuvasta pyynnöstä, kuten HTTP-menetelmän, URL-osoitteen, otsikot jne.

Yllä oleva käsittelijätoiminto käyttää a vaihtaa lauseke määrittää pyyntömenetelmä ja suorittaa erilaisia ​​koodilohkoja menetelmän perusteella. Jos menetelmä on SAADA , ohjaaja hoitaa SAADA pyyntö. Muuten menetelmä on LÄHETTÄÄ; se hoitaa LÄHETTÄÄ pyyntö.

Jos menetelmä on jokin muu, se lähettää an http.Virhe 'Virheellinen pyyntömenetelmä' -viestillä ja a StatusMethodEi sallittu HTTP-tilakoodi asiakkaalle.

Voit kirjoittaa takaisin merkkijonoja asiakkaalle käyttämällä Kirjoittaa kirjoittajainstanssisi menetelmä, joka ottaa tavun osan merkkijonoista ja kirjoittaa merkkijonon.

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

Voit käyttää WriteHeader sinun menetelmäsi ResponseWriter esimerkiksi kirjoittaa otsikoita asiakkaalle.

 w.WriteHeader(http.StatusOK) 

Työskentely HTTP-väliohjelmiston kanssa

Väliohjelmisto koostuu toiminnoista, jotka sieppaavat saapuvat HTTP-pyynnöt toimintoja varten ennen kuin pyyntö siirtyy seuraavaan käsittelijätoimintoon.

Tässä on esimerkki väliohjelmiston käsittelijän toiminnon kirjaamisesta Go:ssa:

 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
    })
}

The logging väliohjelmisto funktio ottaa vastaan ​​HTTP-käsittelijän ja palauttaa uuden HTTP-käsittelijän. Palautettu HTTP-käsittelijä on anonyymi toiminto, joka ottaa vastaan ​​HTTP-vastauksen kirjoittajan ja HTTP-pyynnön. Funktio kirjaa pyynnön lokiin ja kutsuu Palvele HTTP menetelmällä Seuraava HTTP-käsittelijä, joka välittää vastauksen kirjoittajan ja pyynnön argumentteina.

Voit käsitellä väliohjelmiston toimintoja Kahva menetelmä http paketti. The Kahva menetelmä ottaa käyttöön reitin ja väliohjelmistotoiminnon.

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

Uudelleenohjaukset HTTP-paketilla

Uudelleenohjaus on suosittu toiminto verkkosovelluksissa, jotka ohjaavat käyttäjät muille resursseille tai verkkosivuille.

Voit ohjata toiselle verkkosivulle käyttämällä Uudelleenohjaus menetelmä http paketti.

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

The Uudelleenohjaus menetelmä ottaa mukaan ResponseWriter ja Pyyntö instansseja, uuden sivun URL-osoite ja uudelleenohjauksen tilakoodi.

Voit rakentaa monimutkaisia ​​sovellusliittymiä Gossa

The http paketti on tehokas ja joustava työkalu monimutkaisten sovellusliittymien rakentamiseen. Voit käyttää Go:n monipuolista standardikirjastoa ja muita tehokkaita kolmannen osapuolen paketteja lisätäksesi sovellusliittymiisi toimintoja, kuten tietokantayhteyksiä ja tukea erilaisille verkkokehyksille.

Golla voit rakentaa skaalautuvia, erittäin suorituskykyisiä API:ita, jotka käsittelevät merkittävää pyyntöliikennettä ja monimutkaisia ​​tietojenkäsittelytehtäviä helposti.