Uvod v paket HTTP Go

Uvod v paket HTTP Go
Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Go je zmogljiv in prilagodljiv jezik za izdelavo spletnih aplikacij. The mreža paket igra bistveno vlogo v Gojevem ekosistemu.





Kot večina strežniških programskih jezikov je tudi Go opremljen s paketom HTTP za interakcijo s protokolom HTTP. Ustrezni paket Go je http paket, podpaket od mreža paket.





Kaj je paket net/http?

  pregled paketa http

The net/http paket je ena od standardnih knjižnic v Go. Zagotavlja celoten nabor funkcij in vrst za gradnjo odjemalcev HTTP, strežnikov in drugih operacij, ki temeljijo na HTTP. Tej vključujejo:





  • Funkcije za izdelavo zahtev HTTP.
  • Obravnava zahtev in odgovorov.
  • Streženje zahtev HTTP.
  • Povezani objekti, kot so glave in piškotki.

The net/http paket podpira tudi šifriranje TLS/SSL, HTTP/2 in druge napredne funkcije, zaradi česar je paket bistveno orodje za razvijalce Go.

Številne priljubljene knjižnice in ogrodja Go, od kompleta spletnih orodij Gorilla do spletnega ogrodja Echo, temeljijo na net/http paket.



Zagon preprostega strežnika HTTP

Zagon strežnikov je ena od osnovnih operacij, ki jih morate razumeti za delo s protokolom HTTP.

Tukaj je program za zaženite preprost strežnik v 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)
}

The vodja funkcija je tipičen upravljalnik zahtev-odgovorov za http paket. Ta funkcija zapiše niz 'Hello, World!' zapisovalcu odziva HTTP.

Pri zagonu kode in obisku http://localhost:8080/ v spletnem brskalniku bi morali videti 'Hello, World!' niz, prikazan v vašem brskalniku.





  rezultat zagona strežnika

Obravnava zahtevkov in odgovorov

Dohodne zahteve lahko obravnavate z HandleFunc metoda http paket. The HandleFunc metoda sprejme niz poti in funkcijo obravnave.

The http.Zahteva metoda je primerek dohodne zahteve in lahko uporabite številne metode svojega primerka za interakcijo z zahtevami do poti.

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

Zgornja koda uporablja http paket za definiranje funkcije obravnave HTTP za /uporabniki pot. Funkcija obravnave posluša dohodne zahteve HTTP na poti in jih obdela na podlagi metode zahteve (npr. DOBITI , OBJAVI itd.)

Funkcija obdelovalca prevzame ResponseWriter in Prošnja metode kot argumenti. The ResponseWriter je vmesnik, ki upravljavcu pomaga pisati podatke kot odgovor odjemalcu in Prošnja je struktura, ki vsebuje informacije o dohodni zahtevi, kot so metoda HTTP, URL, glave itd.

Zgornja funkcija upravljalnika uporablja a stikalo stavek za določitev metode zahteve in izvajanje različnih blokov kode na podlagi metode. Če je metoda DOBITI , bo skrbnik obravnaval DOBITI prošnja. Sicer pa je metoda OBJAVA; bo obvladal OBJAVI prošnja.

Če je metoda drugačna, bo poslala http.Napaka s sporočilom »Neveljavna metoda zahteve« in a StatusMethodNotAllowed Statusna koda HTTP stranki.

Odjemalcu lahko vrnete nize z uporabo Pišite metoda vašega primerka zapisovalnika, ki sprejme bajtno rezino nizov in zapiše niz.

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

Lahko uporabite WriteHeader vaša metoda ResponseWriter primerek za pisanje glav odjemalcu.

 w.WriteHeader(http.StatusOK) 

Delo z vmesno programsko opremo HTTP

Vmesna programska oprema je sestavljena iz funkcij, ki prestrežejo dohodne zahteve HTTP za operacije, preden se zahteva nadaljuje z naslednjo funkcijo obravnave.

Tu je primer beleženja funkcije upravljalnika vmesne programske opreme v 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
    })
}

The beleženje vmesne programske opreme funkcija prevzame obravnavo HTTP in vrne nov obravnavo HTTP. Vrnjeni upravljalnik HTTP je anonimna funkcija, ki sprejme pisca odziva HTTP in zahtevo HTTP. Funkcija zabeleži zahtevo in pokliče Streži HTTP metoda na Naslednji Obravnavalnik HTTP, ki posreduje zapisovalca odgovora in zahtevo kot argumenta.

Funkcije vmesne programske opreme lahko upravljate z Ročaj metoda http paket. The Ročaj metoda prevzame pot in funkcijo vmesne programske opreme.

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

Preusmeritve s paketom HTTP

Preusmerjanje je priljubljena operacija za spletne aplikacije, ki uporabnike napotijo ​​na druge vire ali spletne strani.

Lahko se preusmerite na drugo spletno stran z Preusmeri metoda http paket.

kako kopirati e -poštne naslove iz gmaila
 http.Redirect(w, r, "http://example.com", http.StatusMovedPermanently) 

The Preusmeri metoda zajema ResponseWriter in Prošnja primerki, novi URL strani in statusna koda za preusmeritev.

V Go lahko sestavite kompleksne API-je

The http paket je zmogljivo in prilagodljivo orodje za gradnjo kompleksnih API-jev. Za dodajanje funkcionalnosti svojim API-jem lahko uporabite bogato standardno knjižnico Go in druge zmogljive pakete tretjih oseb, kot je povezljivost z bazo podatkov in podpora za različna spletna ogrodja.

Z Go lahko zgradite razširljive, visoko zmogljive API-je, ki z lahkoto obravnavajo velik promet zahtev in zapletene naloge obdelave podatkov.