Čitatelia ako vy pomáhajú podporovať MUO. Keď uskutočníte nákup pomocou odkazov na našej stránke, môžeme získať pridruženú províziu. Čítaj viac.

Go je výkonný a flexibilný jazyk na vytváranie webových aplikácií. The net balík hrá zásadnú úlohu v ekosystéme Go.

Ako väčšina programovacích jazykov na strane servera, Go sa dodáva s balíkom HTTP na interakciu s protokolom HTTP. Príslušný balík Go je http balík, čiastkový balík net balík.

Čo je to balík net/http?

The net/http package je jednou zo štandardných knižníc v Go. Poskytuje úplnú sadu funkcií a typov na vytváranie klientov HTTP, serverov a iných operácií založených na HTTP. Tie obsahujú:

  • Funkcie na vytváranie požiadaviek HTTP.
  • Vybavovanie žiadostí a odpovedí.
  • Poskytovanie požiadaviek HTTP.
  • Súvisiace objekty, ako sú hlavičky a súbory cookie.

The net/http balík podporuje aj šifrovanie TLS/SSL, HTTP/2 a ďalšie pokročilé funkcie, vďaka čomu je balík nevyhnutným nástrojom pre vývojárov Go.

Mnoho populárnych knižníc a rámcov Go, od súpravy webových nástrojov Gorilla po webový rámec Echo, stavia na net/http balík.

instagram viewer

Spustenie jednoduchého HTTP servera

Spustenie serverov je jednou zo základných operácií, ktorým musíte rozumieť, aby ste mohli pracovať s protokolom HTTP.

Tu je program na to spustiť jednoduchý server v Go:

balík Hlavná

importovať (
"fmt"
"net/http"
)

// handler je typický HTTP handler request-response v Go; podrobnosti neskôr
funcpsovod(w http. ResponseWriter, r *http. žiadosť) {
// Fprintf naformátuje reťazec na zapisovač
fmt. Fprintf (š, "Ahoj Svet!")
}

funcHlavná() {
http. HandleFunc("/", manipulant)
http. Počúvaj a podávaj (":8080", nula)
}

The psovod funkcia je typickým obslužným programom žiadosti a odpovede pre http balík. Táto funkcia zapíše reťazec "Ahoj, svet!" na zapisovač odpovedí HTTP.

Pri spustení kódu a návšteve http://localhost: 8080/ vo webovom prehliadači by ste mali vidieť "Ahoj, svet!" reťazec zobrazený vo vašom prehliadači.

Vybavovanie žiadostí a odpovedí

Prichádzajúce požiadavky môžete spracovať pomocou HandleFunc metóda http balík. The HandleFunc metóda berie reťazec trasy a funkciu obsluhy.

The http. Žiadosť method je inštanciou prichádzajúcej požiadavky a na interakciu s požiadavkami na smerovanie môžete použiť množstvo metód vašej inštancie.

http. HandleFunc("/users", func(w http. ResponseWriter, r *http. žiadosť) {
prepínač r. metóda {
prípad"ZÍSKAŤ":
// spracovanie požiadavky GET
prípad"POST":
// spracovanie požiadavky POST
predvolená:
http. Chyba (w, "Neplatná metóda žiadosti", http. StatusMethodNotAllowed)
}
})

Vyššie uvedený kód používa http balík na definovanie funkcie obsluhy HTTP pre /users trasu. Funkcia obsluhy počúva prichádzajúce požiadavky HTTP na trase a spracováva ich na základe metódy požiadavky (napr. GET, POST, atď.)

Funkcia handlera preberá ResponseWriter a Žiadosť metódy ako argumenty. The ResponseWriter je rozhranie, ktoré pomáha obsluhe zapisovať dáta ako odpoveď klientovi a Žiadosť je štruktúra, ktorá obsahuje informácie o prichádzajúcej požiadavke, ako je napríklad metóda HTTP, adresa URL, hlavičky atď.

Funkcia obsluhy vyššie používa a prepínač na určenie metódy požiadavky a spustenie rôznych blokov kódu na základe metódy. Ak je metóda GET, bude manipulovať psovod GET žiadosť. V opačnom prípade je metóda POST; to zvládne POST žiadosť.

Ak je metóda iná, odošle http. Chyba so správou „Neplatná metóda požiadavky“ a a StatusMethodNotAllowedStavový kód HTTP klientovi.

Reťazce môžete zapísať späť klientovi pomocou Napíšte metóda vašej inštancie zapisovača, ktorá vezme bajtový rez reťazcov a zapíše reťazec.

w. Napíšte ([]byte("Ahoj Svet!"))

Môžete použiť WriteHeader tvoja metóda ResponseWriter na zapisovanie hlavičiek klientovi.

w. WriteHeader (http. Stav OK)

Práca s HTTP Middleware

Middleware pozostáva z funkcií, ktoré zachytávajú prichádzajúce požiadavky HTTP na operácie predtým, ako požiadavka prejde na ďalšiu funkciu obsluhy.

Tu je príklad protokolovania funkcie obslužného programu middleware v Go:

funcloggingMiddleware(ďalšie http. manipulátor)http.Handler {
vrátiť http. HandlerFunc(func(w http. ResponseWriter, r *http. žiadosť) {
// zapíšte požiadavku
Ďalšie. ServeHTTP(w, r)
// zapíšte odpoveď
})
}

The loggingMiddleware funkcia prevezme obsluhu HTTP a vráti novú obsluhu HTTP. Vrátený obslužný program HTTP je anonymná funkcia, ktorá preberá zapisovač odpovede HTTP a požiadavku HTTP. Funkcia zaznamená požiadavku a zavolá Slúžiť HTTP metóda na Ďalšie HTTP handler, ktorý odovzdá zapisovač odpovede a požiadavku ako argumenty.

Funkcie middlewaru môžete zvládnuť pomocou Rukoväť metóda http balík. The Rukoväť metóda preberá smerovanie a funkciu middlewaru.

http. Rukoväť ("/", loggingMiddleware (http. HandlerFunc (handler)))

Presmeruje s balíkom HTTP

Presmerovanie je populárna operácia pre webové aplikácie, ktoré používateľov odkazujú na iné zdroje alebo webové stránky.

Môžete presmerovať na inú webovú stránku pomocou Presmerovať metóda http balík.

http. Presmerovanie (w, r, " http://example.com", http. StavPresunutý natrvalo)

The Presmerovať metóda berie v ResponseWriter a Žiadosť inštancie, adresu URL novej stránky a stavový kód pre presmerovanie.

V Go môžete vytvárať komplexné rozhrania API

The http balík je výkonný a flexibilný nástroj na vytváranie komplexných rozhraní API. Môžete použiť bohatú štandardnú knižnicu Go a ďalšie výkonné balíky tretích strán na pridanie funkcií do vašich rozhraní API, ako je napríklad pripojenie k databáze a podpora pre rôzne weby rámcov.

Pomocou Go môžete vytvárať škálovateľné, vysoko výkonné rozhrania API, ktoré ľahko zvládajú značnú návštevnosť požiadaviek a zložité úlohy spracovania údajov.