Webkiszolgáló létrehozása Golang

Go segítségével nagyszerű nyelv az egyszerű, mégis hatékony webszerverek és webszolgáltatások létrehozásához. Beépített HTTP csomagot biztosít, amely segédprogramokat tartalmaz a web-vagy fájlkiszolgáló gyors létrehozásához.

ennek az oktatóanyagnak az a célja, hogy olyan webszervert hozzon létre, amely képes fogadni egy GET kérést, és választ adni. A kiszolgálót statikus fájlok kiszolgálására használjuk, fájlkiszolgálóként. Ezután a webszerver válaszol egy űrlapbenyújtásból származó postai kérésre, például egy kapcsolatfelvételi űrlapra.,

minden további nélkül, nézzük meg, hogyan kell építeni az első webszerver Go.

Setup

szüksége lesz Go Verzió 1.11 vagy magasabb, hogy kövesse ezt a bemutatót.

ebben a szakaszban elkészítjük az összes szükséges fájlt, majd létrehozzuk a megfelelő fájlszerkezetet. Ezután importáljuk csomagjainkat, hogy teszteljük, működik-e a Beállítás. Ne aggódjon — a beállítás nagyon alapvető a Golang webszerver számára.

hozza létre a következő fájlokat és mappákat az alábbi struktúrának megfelelően., A server.go fájl a projekt gyökerében található, csakúgy, mint a static mappa, amely két HTML fájlt tartalmaz: index.html és form.html.

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

most írjunk néhány kódot. Nyissa meg a server.go fájlt, majd importálja a szükséges csomagokat. Afmt segítségével hasznos adatokat nyomtat a terminálra, alog pedig végzetes hibákat nyomtat a webszerver összeomlása esetén.

a net/http a legfontosabb csomag., Ez biztosítja az összes funkciót létre egy HTTP kliens vagy szerver megvalósítása, mint a Golang webszerver.

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

végül adjunk hozzá egy egyszerű main()függvényt a server.go fájlba, amely üzenetet nyomtat a terminálra.

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

a Beállítás teszteléséhez indítsa el a fictive szervert a következő paranccsal.

go run server.go

Ha a beállítással együtt követte, akkor a következő kimenetet kell látnia a terminálon.,

Starting server at port 8080

ha minden jól néz ki, a következő lépés egy webkiszolgáló létrehozása.

webkiszolgáló indítása a GET routes

segítségével ebben a szakaszban létrehozunk egy webkiszolgálót, amelyet valójában a 8080-as porton szolgálnak fel, és képes reagálni a bejövő GET kérésekre.

módosítsuk a kódot a main() funkciónkban, hogy elindítsunk egy webszervert a 8080-as porton. A ListenAndServe módszert a http csomag exportálja, amelyet az első lépés során importáltunk. Ez a módszer lehetővé teszi számunkra, hogy elindítsuk a webkiszolgálót, majd megadjuk a bejövő kérések meghallgatásához szükséges portot.,

vegye figyelembe, hogy a port paramétert a kettőspont-írásjelek által előre megadott karakterláncként kell átadni. A második paraméter elfogadja a kezelőt a kiszolgáló HTTP/2 konfigurálásához. Ez azonban nem fontos az oktatóanyag számára, így biztonságosan átadhatjuk a nil – ot a második érvként.

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

Ezen a ponton a szerver elindulhat, de még mindig nem tudja, hogyan kell kezelni a kéréseket. Át kell adnunk a kezelőket a szerverre, hogy tudja, hogyan kell reagálni a beérkező kérésekre, és mely kéréseket kell elfogadni.,

a HandleFunc funkciót használjuk az útvonalkezelők hozzáadásához a webszerverhez. Az első argumentum elfogadja a /hellohallgatásához szükséges útvonalat. Itt mondja meg a kiszolgálónak, hogy hallgassa meg a bejövő kéréseit. A második argumentum olyan függvényt fogad el, amely az üzleti logikát tartja a kérés helyes megválaszolásához.

alapértelmezés szerint ez a funkció elfogadja aResponseWriter választ, és aRequest objektumot, amely további információt nyújt a kérésről., Például hozzáférhet az elküldött fejlécekkel kapcsolatos információkhoz, amelyek hasznosak lehetnek a kérés hitelesítéséhez.

mint látható, a kezelő "Hello!” üzenetet küld, amikor ezt a választ átadjuk a ResponseWriter.

most próbáljuk ki ezt a beállítást. Indítsa el a webszervert a go run server.go és látogasson el a oldalra. Ha a szerver válaszol "Hello!", folytathatja a következő lépést, ahol megtudhatja, hogyan adhat hozzá alapvető biztonságot a Golang webszerver útvonalaihoz.,

alapvető biztonság hozzáadása az útvonalakhoz

magától értetődik, hogy a biztonság fontos. Fedezzünk fel néhány alapvető stratégiát a Go webszerver biztonságának növelése érdekében.

mielőtt megtennénk, egy pillanatra meg kell vennünk a kód olvashatóságának növelését. Hozzuk létre a helloHandler függvényt, amely a /hello kéréshez kapcsolódó összes logikát tartalmazza.

Ez a kezelő a Request objektumot használja annak ellenőrzésére, hogy a kért útvonal helyes-e. Ez egy nagyon alapvető példa arra, hogyan használhatja a Request objektumot.,

Ha az elérési út helytelen, a kiszolgáló StatusNotFound hibát ad vissza a felhasználónak. Ha hibát szeretne írni a felhasználónak, használhatja a http.Error módszert. Vegye figyelembe, hogy a StatusNotFound kód 404 hibának felel meg. Minden állapot kód megtalálható a Golang dokumentációban.

ezután hozzáadunk egy ellenőrzést a kérés típusának ellenőrzésére. Ha a módszer nem felel meg a GET értéknek, a kiszolgáló új hibát ad vissza. Amikor mindkét ellenőrzés elhalad, a szerver visszaadja a siker válasz "Hello!".,

az utolsó dolog, amit meg kell tennünk, a handleFunc függvény módosítása a main() függvényben, hogy elfogadjuk a fenti helloHandler függvényt.

http.HandleFunc("/hello", helloHandler)

Az alábbiakban a server.go fájl teljes kódja található.

ezután elindítjuk a Go webszervert go run server.go. A biztonságot úgy tesztelheti, hogy POSTAKÉRÉST küld a – nak egy olyan eszköz segítségével, mint a postás vagy a cURL.

statikus webkiszolgáló indítása

ebben a lépésben létrehozunk egy egyszerű fájlkiszolgálót statikus fájlok fogadására., Ez egy nagyon egyszerű kiegészítés a webszerverhez.

annak érdekében, hogy a webszerveren kiszolgálhassuk a tartalmat, módosítsuk a index.html fájlt, amely a static mappában található. Ahhoz, hogy a dolgok egyszerűek legyenek, csak adjon hozzá egy címet a fájlhoz, amely azt mondja: “Static Website.”Ha szeretné, további fájlokat vagy stílusfájlokat adhat hozzá, hogy a webszerver kicsit szebb legyen.

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

a static mappa kiszolgálásához két sor kódot kell hozzáadnia a server.go – hoz., Az első kódsor a FileServer függvény segítségével hozza létre a fájlkiszolgáló objektumot. Ez a függvény a http.Dir típus elérési útját fogadja el. Ezért a "./static” karakterláncot http.Dir útvonal típusra kell konvertálnunk.

ne felejtse el megadni aHandle útvonalat, amely elfogadja az elérési utat és a fájlszervert. Ez a függvény ugyanúgy működik, mint a HandleFunc függvény, néhány kis különbséggel. Ha többet szeretne megtudni aFileServer objektumról, ellenőrizze a dokumentációt.,

itt az ideje kipróbálni a kódot. A kiszolgálót a go run server.go és látogasson el a oldalra. Látnia kell a”Static Website ” fejlécet.

fogadjon el egy űrlap benyújtási kérelmet

végül a webszervernek válaszolnia kell egy űrlap benyújtására.

adjunk hozzá néhány tartalmat a form.htmlfájlhoz a static mappában. Vegye figyelembe, hogy az űrlap művelet a /formcímre kerül elküldésre. Ez azt jelenti, hogy az űrlap POSTAKÉRÉSÉT a címre küldjük., Maga az űrlap két változó bemenetét kéri: nameés address.

a következő lépés a kezelő létrehozása a /form kérés elfogadásához. Aform.html fájl már a fájlszerveren keresztül elérhető, és a

First, the function has to call ParseForm() – on keresztül érhető el a nyers lekérdezés elemzéséhez és frissítéséhezr.PostForm ésr.Form. Ez lehetővé teszi a name és address értékek elérését a r.FormValue módszerrel.,

a függvény végén mindkét értéket a ResponseWriter fmt.Fprintfértékre írjuk.

ne felejtse el hozzáadni az új űrlapkezelő útvonalat a main() függvényhez.

http.HandleFunc("/form", formHandler)

most a teljes kód így néz ki.

az űrlapkezelő kipróbálása

tesztelhetjük az űrlapot, ha a kiszolgálót go run server.go – val indítjuk. Amikor a szerver elindul, látogasson el a oldalra. Látnod kell két beviteli mezőt és egy beküldési gombot.,

amikor kitöltötte az űrlapot, nyomja meg a submit gombot. A kiszolgálónak feldolgoznia kell a POST-kérését, és meg kell mutatnia az eredményt a válaszoldalon, például az alábbi válaszoldalon.

Ha a fenti eredményt látja, sikeresen létrehozta az első Golang web-és fájlkiszolgálót. Gratulálok!

Ha tovább szeretné felfedezni a Golang webszervereket, a Golang HTTP csomag dokumentációja tele van nagyszerű példákkal., Ez a webes alkalmazások Go-ban történő írásáról szóló bemutató egy másik nagyszerű erőforrás, amely a legtöbb alapot lefedi.

LogRocket: teljes láthatóság a webes alkalmazásokban

A LogRocket egy frontend alkalmazásfigyelő megoldás, amely lehetővé teszi a problémák visszajátszását, mintha a saját böngészőjében történt volna. Ahelyett, hogy kitalálná, miért történnek hibák, vagy képernyőképeket vagy naplóbejegyzéseket kér a felhasználóktól, a LogRocket lehetővé teszi a munkamenet visszajátszását, hogy gyorsan megértse, mi történt rosszul., Ez tökéletesen működik minden alkalmazás, függetlenül attól, hogy a keretrendszer, valamint plugins naplózni további kontextusban Redux, Vuex, @ngrx / store.

A Redux műveletek és állapot naplózása mellett a LogRocket Records konzolnaplókat, JavaScript hibákat, stacktraceket, hálózati kéréseket/válaszokat fejlécekkel + testekkel, böngésző metaadatokkal és egyéni naplókkal. A DOM-ot arra is felhasználja, hogy a HTML-t és a CSS-t rögzítse az oldalon, és még a legösszetettebb egyoldalas alkalmazások képpont-tökéletes videóit is újrateremtse.

próbálja ki ingyen.

Share

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük