Go yra galinga ir lanksti žiniatinklio programų kūrimo kalba. The neto paketas vaidina esminį vaidmenį Go ekosistemoje.
Kaip ir dauguma serverio programavimo kalbų, „Go“ pristatomas su HTTP paketu, skirtu sąveikauti su HTTP protokolu. Atitinkamas „Go“ paketas yra http paketas, antrinis paketas neto paketą.
Kas yra „net/http“ paketas?
The net/http paketas yra viena iš standartinių Go bibliotekų. Jame pateikiamas visas funkcijų ir tipų rinkinys, skirtas HTTP klientams, serveriams ir kitoms HTTP pagrįstoms operacijoms kurti. Jie apima:
- Funkcijos, skirtos HTTP užklausoms teikti.
- Užklausų ir atsakymų tvarkymas.
- HTTP užklausų aptarnavimas.
- Susiję objektai, pvz., antraštės ir slapukai.
The net/http paketas taip pat palaiko TLS/SSL šifravimą, HTTP/2 ir kitas pažangias funkcijas, todėl paketas yra esminis įrankis Go kūrėjams.
Daugelis populiarių „Go“ bibliotekų ir sistemų, nuo „Gorilla“ žiniatinklio įrankių rinkinio iki „Echo“ žiniatinklio sistemos, yra sukurtos ant
net/http paketą.Paprasto HTTP serverio paleidimas
Serverių paleidimas yra viena iš pagrindinių operacijų, kurią reikia suprasti norint dirbti su HTTP protokolu.
Čia yra programa, skirta paleiskite paprastą serverį „Go“.:
paketą pagrindinis
importuoti (
"fmt"
"net/http"
)// tvarkytojas yra tipiška HTTP užklausų-atsakymų tvarkytoja Go; detales vėliau
funcprižiūrėtojas(w http. ResponseWriter, r *http. užklausa) {
// Fprintf formatuoja eilutę rašytojui
fmt. Fprintf (w, "Labas pasauli!")
}
funcpagrindinis() {
http. HandleFunc("/", prižiūrėtojas)
http. ListenAndServe(":8080", nulis)
}
The prižiūrėtojas funkcija yra tipinė užklausų ir atsakymų tvarkytuvė http paketą. Ši funkcija įrašo eilutę "Sveikas, pasauli!" į HTTP atsakymo rašiklį.
Paleidus kodą ir apsilankius http://localhost: 8080/ žiniatinklio naršyklėje turėtumėte pamatyti "Sveikas, pasauli!" naršyklėje rodoma eilutė.
Užklausų ir atsakymų tvarkymas
Galite tvarkyti gaunamas užklausas naudodami HandleFunc metodas http paketą. The HandleFunc metodas naudoja maršruto eilutę ir tvarkyklės funkciją.
The http. Prašymas metodas yra gaunamos užklausos egzempliorius, ir jūs galite naudoti daugybę savo egzemplioriaus metodų, kad galėtumėte sąveikauti su maršruto užklausomis.
http. HandleFunc("/vartotojai", func(w http. ResponseWriter, r *http. užklausa) {
jungiklis r. Metodas {
atveju"GAUTI":
// tvarkyti GET užklausą
atveju"POST":
// tvarkyti POST užklausą
numatytas:
http. Klaida (w, "Netinkamas užklausos metodas", http. Būsenos metodasNeleidžiamas)
}
})
Aukščiau pateiktas kodas naudoja http paketą, skirtą HTTP tvarkyklės funkcijai apibrėžti /users maršrutą. Valdiklio funkcija klauso įeinančių HTTP užklausų maršrute ir apdoroja jas pagal užklausos metodą (pvz., GAUTI, PASTir tt)
Valdiklio funkcija užima ResponseWriter ir Prašymas metodai kaip argumentai. The ResponseWriter yra sąsaja, padedanti tvarkytojui rašyti duomenis kaip atsakymą klientui ir Prašymas yra struktūra, kurioje yra informacija apie gaunamą užklausą, pvz., HTTP metodas, URL, antraštės ir kt.
Aukščiau pateikta tvarkyklės funkcija naudoja a jungiklis pareiškimą, kad nustatytų užklausos metodą ir paleistumėte skirtingus kodo blokus pagal metodą. Jei metodas yra GAUTItvarkytojas tvarkys GAUTI prašymas. Priešingu atveju metodas yra POST; jis tvarkys PAST prašymas.
Jei metodas yra kitas, jis atsiųs an http. Klaida su pranešimu „Netinkamas užklausos metodas“ ir a StatusMethodNeleidžiamaHTTP būsenos kodas klientui.
Galite rašyti atgal eilutes klientui naudodami Rašyti jūsų rašytojo egzemplioriaus metodas, kuris paima baito eilutę ir įrašo eilutę.
w. Rašyti ([]baitas("Labas pasauli!"))
Galite naudoti WriteHeader jūsų metodas ResponseWriter pavyzdžiui, rašyti antraštes klientui.
w. WriteHeader (http. BūsenaGerai)
Darbas su HTTP tarpine programine įranga
Tarpinę programinę įrangą sudaro funkcijos, kurios perima gaunamas HTTP užklausas operacijoms, prieš perduodant užklausą į kitą tvarkyklės funkciją.
Štai tarpinės programinės įrangos tvarkyklės funkcijos registravimo „Go“ pavyzdys:
funclogging Vidurinė programinė įranga(kitas http. tvarkytojas)http.Prižiūrėtojas {
grąžinti http. HandlerFunc(func(w http. ResponseWriter, r *http. užklausa) {
// užregistruokite užklausą
Kitas. Pateikti HTTP(w, r)
// užregistruokite atsakymą
})
}
The logging Vidurinė programinė įranga funkcija paima HTTP tvarkyklę ir grąžina naują HTTP tvarkyklę. Grąžinta HTTP tvarkytoja yra anoniminė funkcija, kuri priima HTTP atsako rašiklį ir HTTP užklausą. Funkcija registruoja užklausą ir iškviečia ServeHTTP metodas ant Kitas HTTP tvarkytojas, perduodantis atsakymo rašytoją ir užklausą kaip argumentus.
Tarpinės programinės įrangos funkcijas galite valdyti naudodami Rankena metodas http paketą. The Rankena metodas apima maršrutą ir tarpinės programinės įrangos funkciją.
http. Rankena ("/", registravimas „Middleware“ (http. HandlerFunc (tvarkytojas)))
Peradresuoja naudojant HTTP paketą
Peradresavimas yra populiari žiniatinklio programų, nukreipiančių vartotojus į kitus išteklius ar tinklalapius, operacija.
Galite peradresuoti į kitą tinklalapį naudodami Peradresuoti metodas http paketą.
http. Peradresuoti (w, r, " http://example.com", http. Būsena Perkelta visam laikui)
The Peradresuoti metodas apima ResponseWriter ir Prašymas atvejus, naujo puslapio URL ir peradresavimo būsenos kodą.
Galite sukurti sudėtingas API naudodami „Go“.
The http paketas yra galingas ir lankstus įrankis kuriant sudėtingas API. Galite naudoti turtingą standartinę Go biblioteką ir kitus galingus trečiųjų šalių paketai, skirti pridėti funkcionalumo jūsų API, pvz., duomenų bazės ryšį ir įvairių žiniatinklio palaikymą karkasai.
Naudodami „Go“ galite sukurti keičiamo dydžio, didelio našumo API, kurios lengvai tvarko didelį užklausų srautą ir sudėtingas duomenų apdorojimo užduotis.