Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Go je výkonný a flexibilní jazyk pro vytváření webových aplikací. The síť balíček hraje zásadní roli v ekosystému Go.

Stejně jako většina programovacích jazyků na straně serveru se Go dodává s balíčkem HTTP pro interakci s protokolem HTTP. Příslušný balíček Go je http balíček, dílčí balíček síť balík.

Co je to balíček net/http?

The net/http package je jednou ze standardních knihoven v Go. Poskytuje úplnou sadu funkcí a typů pro vytváření klientů HTTP, serverů a dalších operací založených na HTTP. Tyto zahrnují:

  • Funkce pro vytváření požadavků HTTP.
  • Vyřizování požadavků a odpovědí.
  • Obsluhování HTTP požadavků.
  • Související objekty, jako jsou záhlaví a soubory cookie.

The net/http balíček také podporuje šifrování TLS/SSL, HTTP/2 a další pokročilé funkce, díky nimž je balíček nezbytným nástrojem pro vývojáře Go.

Mnoho populárních knihoven a rámců Go, od sady webových nástrojů Gorilla po webový rámec Echo, staví na net/http balík.

instagram viewer

Spuštění jednoduchého HTTP serveru

Spouštění serverů je jednou ze základních operací, kterým musíte rozumět, abyste mohli pracovat s protokolem HTTP.

Tady je program na to spustit jednoduchý server v Go:

balík hlavní

import (
"fmt"
"net/http"
)

// handler je typický HTTP handler request-response v Go; podrobnosti později
funcpsovod(w http. ResponseWriter, r *http. Žádost) {
// Fprintf naformátuje řetězec na zapisovač
fmt. Fprintf (w, "Ahoj světe!")
}

funchlavní() {
http. HandleFunc("/", manipulant)
http. Poslouchejte a servírujte (":8080", nula)
}

The psovod funkce je typickým obslužným programem dotaz-odpověď pro http balík. Tato funkce zapíše řetězec "Hello, World!" k zapisovači odpovědi HTTP.

Při spuštění kódu a návštěvě http://localhost: 8080/ ve webovém prohlížeči byste měli vidět "Hello, World!" řetězec zobrazený ve vašem prohlížeči.

Vyřizování požadavků a odpovědí

Příchozí požadavky můžete zpracovávat pomocí HandleFunc metoda http balík. The HandleFunc metoda přijímá řetězec trasy a funkci handleru.

The http. Žádost metoda je instancí příchozího požadavku a k interakci s požadavky na směrování můžete použít četné metody vaší instance.

http. HandleFunc("/users", func(w http. ResponseWriter, r *http. Žádost) {
přepínač r. metoda {
pouzdro"DOSTAT":
// zpracování požadavku GET
pouzdro"POŠTA":
// zpracování požadavku POST
výchozí:
http. Chyba (w, "Neplatná metoda požadavku", http. StatusMethodNotAllowed)
}
})

Výše uvedený kód používá http balíček k definování funkce obsluhy HTTP pro /users trasa. Funkce handler poslouchá příchozí požadavky HTTP na trase a zpracovává je na základě metody požadavku (např. DOSTAT, POŠTA, atd.)

Funkce handler přebírá ResponseWriter a Žádost metody jako argumenty. The ResponseWriter je rozhraní, které pomáhá obsluze zapisovat data jako odpověď klientovi a Žádost je struktura, která obsahuje informace o příchozím požadavku, jako je metoda HTTP, URL, hlavičky atd.

Výše uvedená funkce handler používá a přepínač příkaz k určení metody požadavku a spuštění různých bloků kódu na základě metody. Pokud je metoda DOSTAT, bude manipulovat psovod DOSTAT žádost. Jinak metoda je POŠTA; to zvládne POŠTA žádost.

Pokud je metoda jiná, odešle http. Chyba se zprávou „Neplatná metoda požadavku“ a a StatusMethodNotAllowedStavový kód HTTP klientovi.

Řetězce můžete klientovi zapsat zpět pomocí Napsat metoda vaší instance zapisovače, která vezme bajtový řez řetězců a zapíše řetězec.

w. Napsat([]byte("Ahoj světe!"))

Můžete použít WriteHeader vaší metodou ResponseWriter instance pro zápis hlaviček klientovi.

w. WriteHeader (http. Stav OK)

Práce s HTTP Middleware

Middleware se skládá z funkcí, které zachycují příchozí požadavky HTTP na operace předtím, než požadavek postoupí k další funkci obsluhy.

Zde je příklad protokolování funkce obslužného programu middlewaru v Go:

funcloggingMiddleware(další http. Psovod)http.Psovod {
vrátit se http. HandlerFunc(func(w http. ResponseWriter, r *http. Žádost) {
// zapište požadavek
další. ServeHTTP(w, r)
// zaznamenat odpověď
})
}

The loggingMiddleware funkce přijímá obsluhu HTTP a vrací novou obsluhu HTTP. Vrácená obslužná rutina HTTP je anonymní funkce, která přijímá zapisovač odpovědi HTTP a požadavek HTTP. Funkce zaznamená požadavek a zavolá Poskytovat HTTP metoda na další Obslužná rutina HTTP, předávání zapisovače odpovědi a požadavku jako argumenty.

S funkcemi middlewaru můžete pracovat Rukojeť metoda http balík. The Rukojeť metoda přebírá cestu a funkci middlewaru.

http. Rukojeť("/", loggingMiddleware (http. HandlerFunc (handler)))

Přesměrování pomocí balíčku HTTP

Přesměrování je oblíbená operace pro webové aplikace, které uživatele odkazují na jiné zdroje nebo webové stránky.

Na jinou webovou stránku můžete přesměrovat pomocí Přesměrování metoda http balík.

http. Přesměrování (w, r, " http://example.com", http. StatusMovedTrvale)

The Přesměrování metoda bere v ResponseWriter a Žádost instance, adresu URL nové stránky a stavový kód pro přesměrování.

V Go můžete vytvářet komplexní rozhraní API

The http package je výkonný a flexibilní nástroj pro vytváření komplexních API. Můžete použít bohatou standardní knihovnu Go a další výkonné balíčky třetích stran pro přidání funkcí do vašich rozhraní API, jako je připojení k databázi a podpora pro různé weby rámců.

S Go můžete vytvářet škálovatelná, vysoce výkonná rozhraní API, která snadno zpracují významný provoz požadavků a složité úlohy zpracování dat.