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 /hello
hallgatá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.html
fájlhoz a static
mappában. Vegye figyelembe, hogy az űrlap művelet a /form
cí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.