Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Go je moćan i fleksibilan jezik za izradu web aplikacija. The neto paket igra bitnu ulogu u Goovom ekosustavu.

Kao i većina programskih jezika na strani poslužitelja, Go se isporučuje s HTTP paketom za interakciju s HTTP protokolom. Relevantni Go paket je http paket, potpaket od neto paket.

Što je net/http paket?

The net/http paket je jedna od standardnih biblioteka u Go. Pruža cijeli skup funkcija i tipova za izgradnju HTTP klijenata, poslužitelja i drugih operacija temeljenih na HTTP-u. To uključuje:

  • Funkcije za izradu HTTP zahtjeva.
  • Rukovanje zahtjevima i odgovorima.
  • Posluživanje HTTP zahtjeva.
  • Povezani objekti kao što su zaglavlja i kolačići.

The net/http paket također podržava TLS/SSL enkripciju, HTTP/2 i druge napredne značajke što paket čini bitnim alatom za Go programere.

Mnoge popularne Go biblioteke i okviri, od Gorilla web alata do Echo web okvira, nadograđuju se na net/http paket.

instagram viewer

Pokretanje jednostavnog HTTP poslužitelja

Pokretanje poslužitelja jedna je od osnovnih operacija koje trebate razumjeti za rad s HTTP protokolom.

Evo programa za pokrenite jednostavan poslužitelj u Gou:

paket glavni

uvoz (
"fmt"
"net/http"
)

// rukovatelj je tipični HTTP rukovatelj zahtjevima i odgovorima u Gou; detalji kasnije
funkrukovatelj(w http. ResponseWriter, r *http. Zahtjev) {
// Fprintf formatira string pisaču
fmt. Fprintf (w, "Pozdrav svijete!")
}

funkglavni() {
http. HandleFunc("/", voditelj)
http. SlušajIPosluži(":8080", nula)
}

The rukovatelj funkcija je tipičan rukovatelj zahtjev-odgovor za http paket. Ova funkcija ispisuje niz "Hello, World!" pisaču HTTP odgovora.

O pokretanju koda i posjeti http://localhost: 8080/ u web pregledniku trebali biste vidjeti "Hello, World!" niz prikazan u vašem pregledniku.

Rukovanje zahtjevima i odgovorima

Možete obraditi dolazne zahtjeve s HandleFunc metoda http paket. The HandleFunc metoda uzima niz rute i funkciju rukovatelja.

The http. Zahtjev metoda je instanca dolaznog zahtjeva, a možete koristiti brojne metode svoje instance za interakciju sa zahtjevima prema ruti.

http. HandleFunc("/korisnici", funk(w http. ResponseWriter, r *http. Zahtjev) {
sklopka r. Metoda {
slučaj"DOBITI":
// obrada GET zahtjeva
slučaj"POST":
// obrada POST zahtjeva
zadano:
http. Greška (w, "Nevažeća metoda zahtjeva", http. StatusMethodNotAllowed)
}
})

Gornji kod koristi http paket za definiranje funkcije HTTP rukovatelja za /users ruta. Funkcija rukovatelja sluša dolazne HTTP zahtjeve na ruti i obrađuje ih na temelju metode zahtjeva (npr. DOBITI, POST, itd.)

Funkcija rukovatelja preuzima ResponseWriter i Zahtjev metode kao argumenti. The ResponseWriter je sučelje koje pomaže rukovatelju da zapiše podatke kao odgovor klijentu, i Zahtjev je struktura koja sadrži informacije o dolaznom zahtjevu, kao što su HTTP metoda, URL, zaglavlja itd.

Gore navedena funkcija rukovatelja koristi a sklopka naredbu za određivanje metode zahtjeva i pokretanje različitih blokova koda na temelju metode. Ako je metoda DOBITI, voditelj će obraditi DOBITI zahtjev. Inače, metoda je POST; to će riješiti POST zahtjev.

Ako je metoda nešto drugo, poslat će http. Greška s porukom "Nevažeća metoda zahtjeva" i a StatusMethodNotAllowedHTTP statusni kod klijentu.

Možete vratiti nizove klijentu koristeći Pisati metoda vaše instance pisača koja uzima bajt odsječak nizova i zapisuje niz.

w. Pisati([]bajt("Pozdrav svijete!"))

Možete koristiti WriteHeader tvoja metoda ResponseWriter instanca za pisanje zaglavlja klijentu.

w. WriteHeader (http. Status OK)

Rad s HTTP međuprogramom

Middleware se sastoji od funkcija koje presreću dolazne HTTP zahtjeve za operacije prije nego što zahtjev prijeđe na sljedeću funkciju rukovatelja.

Evo primjera bilježenja funkcije rukovatelja međuopreme u Go:

funkbilježenje srednjeg softvera(sljedeći http. voditelj)http.rukovatelj {
povratak http. HandlerFunc(funk(w http. ResponseWriter, r *http. Zahtjev) {
// zabilježi zahtjev
Sljedeći. ServeHTTP(w, r)
// zabilježi odgovor
})
}

The bilježenje srednjeg softvera funkcija preuzima HTTP rukovatelj i vraća novi HTTP rukovatelj. Vraćeni HTTP rukovatelj anonimna je funkcija koja preuzima autora HTTP odgovora i HTTP zahtjev. Funkcija bilježi zahtjev i poziva Služi HTTP metoda na Sljedeći HTTP rukovatelj, prosljeđivanje pisca odgovora i zahtjeva kao argumenata.

Funkcijama međuprograma možete upravljati s Ručka metoda http paket. The Ručka metoda preuzima rutu i funkciju međuprograma.

http. Ručka ("/", bilježenje srednjeg softvera (http. HandlerFunc (rukovatelj)))

Preusmjeravanja s HTTP paketom

Preusmjeravanje je popularna operacija za web aplikacije koje upućuju korisnike na druge resurse ili web stranice.

Možete preusmjeriti na drugu web stranicu pomoću Preusmjeri metoda http paket.

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

The Preusmjeri metoda uzima u ResponseWriter i Zahtjev instance, novi URL stranice i statusni kod za preusmjeravanje.

Možete izgraditi složene API-je u Gou

The http paket je moćan i fleksibilan alat za izgradnju složenih API-ja. Možete koristiti Go bogatu standardnu ​​biblioteku i druge moćne pakete trećih strana za dodavanje funkcionalnosti vašim API-jima, kao što je povezivanje s bazom podataka i podrška za različite webove okviri.

S Go-om možete izgraditi skalabilne, visokoučinkovite API-je koji s lakoćom obrađuju značajan promet zahtjeva i složene zadatke obrade podataka.