Vytvoření webového serveru s Golangem

Go je skvělý jazyk pro vytváření jednoduchých, ale efektivních webových serverů a webových služeb. Poskytuje vestavěný balíček HTTP, který obsahuje nástroje pro rychlé vytvoření webového nebo souborového serveru.

cílem tohoto tutoriálu je vytvořit webový server, který může přijmout požadavek GET a podat odpověď. Budeme používat server sloužit statické soubory, působí jako souborový server. Poté přimějeme webový server reagovat na žádost o příspěvek pocházející z podání formuláře, například kontaktního formuláře.,

bez dalších okolků, pojďme prozkoumat, jak vytvořit svůj první webový server s Go.

Setup

pro sledování tohoto tutoriálu budete potřebovat Go verzi 1.11 nebo vyšší.

v této části vytvoříme všechny potřebné soubory a vytvoříme správnou strukturu souborů. Poté importujeme naše balíčky a otestujeme, zda nastavení funguje. Nebojte se-nastavení je pro webový server Golang velmi základní.

vytvořte následující soubory a složky podle struktury níže., Soubor server.go sedí v kořenovém adresáři projektu, stejně jako static složka, která obsahuje dva soubory HTML: index.html form.html.

- server.go- static/- - index.html- - form.html

nyní napíšeme nějaký kód. Otevřete soubor server.go a importujte požadované balíčky. Použijeme fmt pro tisk užitečných dat do terminálu a log pro tisk fatálních chyb v případě selhání webového serveru.

net/http je nejdůležitějším balíčkem., Poskytuje všechny funkce pro vytvoření HTTP klienta nebo implementace serveru, jako je webový server Golang.

package mainimport ( "fmt" "log" "net/http")

a Konečně, pojďme přidat jednoduchý main() funkce server.go soubor, který vypíše hlášení na terminálu.

func main() { fmt.Printf("Starting server at port 8080\n")}

Chcete-li otestovat nastavení, spusťte fiktivní server následujícím příkazem.

go run server.go

Pokud jste postupovali spolu s nastavením, měli byste v terminálu vidět následující výstup.,

Starting server at port 8080

Pokud vše vypadá dobře, dalším krokem je vytvoření webového serveru.

spuštění webového serveru s get routes

v této fázi vytvoříme webový server, který je skutečně obsluhován na portu 8080 a může reagovat na příchozí požadavky GET.

upravíme kód v naší funkci main() a spustíme webový server na portu 8080. MetodaListenAndServe je exportována paketem http, který jsme importovali během prvního kroku. Tato metoda nám umožňuje spustit webový server a určit port pro poslech příchozích požadavků.,

všimněte si, že parametr portu musí být předán jako řetězec předepsaný interpunkcí tlustého střeva. Druhý parametr přijímá psovod pro konfiguraci serveru pro HTTP / 2. To však není důležité pro tento tutoriál, takže můžeme bezpečně předat nil jako druhý argument.

 func main() { fmt.Printf("Starting server at port 8080\n") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) }}

v tomto okamžiku může server spustit, ale stále neví, jak zpracovat požadavky. Musíme předat manipulátory serveru, aby věděl, jak reagovat na příchozí požadavky a jaké požadavky přijmout.,

použijeme funkciHandleFunc pro přidání manipulátorů tras na webový server. První argument přijímá cestu, kterou potřebuje poslouchat pro /hello. Zde řeknete serveru, aby poslouchal všechny příchozí požadavky na . Druhý argument přijímá funkci, která drží obchodní logiku, aby správně reagovala na požadavek.

ve výchozím nastavení je tato funkce přijímá ResponseWriter odeslat odpověď zpět a Request objekt, který obsahuje další informace o žádosti sám., Můžete například přistupovat k informacím o odeslaných záhlaví, které mohou být užitečné pro ověření žádosti.

jak vidíte, psovod odešle"Hello!” zprávu, když předáme tuto odpověď ResponseWriter.

nyní vyzkoušejte toto nastavení. Spusťte webový server pomocí go run server.go a navštivte . Pokud server reaguje pomocí "Hello!", můžete pokračovat v dalším kroku, kde se naučíte, jak přidat základní zabezpečení do tras webového serveru Golang.,

přidat základní zabezpečení tras

je samozřejmé, že bezpečnost je důležitá. Pojďme prozkoumat některé základní strategie pro zvýšení bezpečnosti vašeho GO webového serveru.

než to uděláme, měli bychom chvíli trvat, než zvýšíme čitelnost našeho kódu. Vytvoříme funkci helloHandler, která obsahuje veškerou logiku související s požadavkem /hello.

Tento psovod používá objektRequest ke kontrole, zda je požadovaná cesta správná. Toto je velmi základní příklad toho, jak můžete použít objekt Request.,

Pokud je cesta nesprávná, server vrátí uživateli chybu StatusNotFound. Chcete-li napsat chybu uživateli, můžete použít metodu http.Error. Všimněte si, že kód StatusNotFound odpovídá chybě 404. Všechny stavové kódy lze nalézt v dokumentaci Golang.

dále přidáme kontrolu ověření typu požadavku. Pokud metoda neodpovídá GET, server vrátí novou chybu. Když obě kontroly projdou, server vrátí svou odpověď na úspěch "Hello!".,

poslední věc, kterou musíme udělat, je změnit na handleFunc funkce v našich main() funkce přijmout výše uvedené helloHandler funkce.

http.HandleFunc("/hello", helloHandler)

níže je úplný kód souboru server.go.

dále spustíme webový server Go s go run server.go. Zabezpečení můžete otestovat zasláním požadavku na příspěvek na pomocí nástroje, jako je Postman nebo cURL.

spusťte statický webový server

v tomto kroku vytvoříme jednoduchý souborový server pro hostování statických souborů., Bude to velmi jednoduchý doplněk k webovému serveru.

abychom se ujistili,že máme obsah, který bude sloužit na webovém serveru, upravíme souborindex.html umístěný ve složce static. Chcete-li zachovat věci jednoduché, stačí přidat záhlaví do souboru, který říká „Static Website.“Pokud si přejete, můžete přidat další soubory nebo stylingové soubory, aby váš webový server vypadal trochu hezčí.

<html> <head> <title>Static Website</title> </head> <body> <h2>Static Website</h2> </body></html>

sloužit static složky, budete muset přidat dva řádky kódu do server.go., První řádek kódu vytvoří objekt souborového serveru pomocí funkce FileServer. Tato funkce přijímá cestu v typu http.Dir. Proto musíme převést cestu řetězce "./static” nahttp.Dir typ cesty.

nezapomeňte zadat trasu Handle, která přijímá cestu a souborový server. Tato funkce funguje stejným způsobem jako funkce HandleFunc s některými malými rozdíly. Pro více informací o objektuFileServer zkontrolujte dokumentaci.,

je čas vyzkoušet kód. Spusťte server pomocí go run server.go a navštivte . Měli byste vidět záhlaví „Static Website„.

přijměte požadavek na odeslání formuláře

nakonec musí webový server reagovat na odeslání formuláře.

přidejme nějaký obsah do souboruform.html ve složcestatic. Všimněte si, že akce formuláře je odeslána na /form. To znamená, že žádost o příspěvek z formuláře bude odeslána na ., Formulář sám žádá o vstup pro dvě proměnné: namea address.

dalším krokem je vytvoření psovoda pro přijetí požadavku/form. form.html soubor je již podává prostřednictvím FileServer a lze přistupovat pomocí

First, the function has to call ParseForm() analyzovat raw query a update r.PostForm r.Form. To nám umožní přístup kname aaddress pomocí metodyr.FormValue.,

Na konci funkce, píšeme obě hodnoty do ResponseWriter pomocí fmt.Fprintf.

nezapomeňte přidat novou trasu psovoda formuláře do funkce main().

http.HandleFunc("/form", formHandler)

nyní celý kód vypadá takto.

vyzkoušení psovoda formuláře

Formulář můžeme otestovat spuštěním serveru pomocí go run server.go. Po spuštění serveru navštivte . Měli byste vidět dvě vstupní pole a tlačítko Odeslat.,

po vyplnění formuláře stiskněte tlačítko submit. Server by měl zpracovat váš požadavek na příspěvek a ukázat vám výsledek na stránce odpovědi , jako je níže uvedená odpověď.

Pokud vidíte výsledek výše, úspěšně jste vytvořili svůj první Golang web a souborový server. Gratuluji!

Pokud chcete prozkoumat webové servery Golang dále, dokumentace balíčku golang HTTP je plná skvělých příkladů., Tento tutoriál o psaní webových aplikací V Go je dalším skvělým zdrojem, který pokrývá většinu základů.

LogRocket: Plné viditelnosti do vaší webové aplikace

LogRocket je frontend aplikace monitorování řešení, které umožňuje přehrávání problémy, jako by se stalo ve vašem vlastním prohlížeči. Namísto hádání, proč se chyby dějí, nebo požádat uživatele o screenshoty a výpisy protokolu, LogRocket vám umožní přehrát relaci, abyste rychle pochopili, co se pokazilo., Funguje perfektně s jakoukoli aplikací, bez ohledu na rámec, a má pluginy pro přihlášení dalšího kontextu z Redux, Vuex a @ngrx/store.

kromě protokolování akcí Redux a stavu zaznamenává logrocket protokoly konzoly, chyby JavaScriptu, stacktraces, síťové požadavky/odpovědi pomocí záhlaví + těl, metadat prohlížeče a vlastních protokolů. To také nástroje DOM pro záznam HTML a CSS na stránce, obnovovat pixel perfektní videa i těch nejsložitějších jednostránkových aplikací.

zkuste to zdarma.

Share

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *