Att skapa en webbserver med Golang

Go är ett utmärkt språk för att skapa enkla men effektiva webbservrar och webbtjänster. Det ger en inbyggd HTTP-paket som innehåller verktyg för att snabbt skapa en webb-eller filserver.

målet med denna handledning är att skapa en webbserver som kan acceptera en GET-förfrågan och tjäna ett svar. Vi använder servern för att servera statiska filer, som fungerar som en filserver. Vi kommer sedan att göra webbservern svara på ett inlägg begäran kommer från ett formulär inlämning, såsom ett kontaktformulär.,

utan ytterligare ado, låt oss utforska hur du bygger din första webbserver med Go.

Setup

Du behöver Go version 1.11 eller högre för att följa denna handledning.

i det här avsnittet skapar vi alla nödvändiga filer och etablerar rätt filstruktur. Därefter importerar vi våra paket för att testa om installationen fungerar. Oroa dig inte-installationen är mycket grundläggande för Golang webbserver.

skapa följande filer och mappar enligt strukturen nedan., Filenserver.go sitter vid roten till ditt projekt, liksom mappenstatic, som innehåller två HTML-filer:index.html ochform.html.

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

låt oss nu skriva lite kod. Öppna filenserver.go och importera de paket som krävs. Vi använderfmt för att skriva ut användbara data till terminalen ochlog för att skriva ut dödliga fel om webbservern kraschar.

net/http är det viktigaste paketet., Det ger alla funktioner för att skapa en HTTP-klient eller server genomförande såsom en Golang webbserver.

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

slutligen, låt oss lägga till en enkelmain() funktion iserver.go fil som skriver ut ett meddelande till terminalen.

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

för att testa inställningen startar du fictive-servern med följande kommando.

go run server.go

om du följde med installationen bör du se följande utmatning i din terminal.,

Starting server at port 8080

om allt ser bra ut är nästa steg att skapa en webbserver.

starta en webbserver med GET routes

i detta skede skapar vi en webbserver som faktiskt serveras på port 8080 och kan svara på inkommande GET-förfrågningar.

låt oss ändra koden i vår main() funktion för att starta en webbserver i port 8080. MetodenListenAndServe exporteras av paketethttp som vi importerade under steg ett. Med den här metoden kan vi starta webbservern och ange porten för att lyssna på inkommande förfrågningar.,

Observera att portparametern måste skickas som en sträng som prependeras av kolonpunktion. Den andra parametern accepterar en hanterare för att konfigurera servern för HTTP / 2. Detta är dock inte viktigt för denna handledning, Så vi kan säkert skicka nil som det andra argumentet.

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

vid denna tidpunkt kan servern starta, men den vet fortfarande inte hur man hanterar förfrågningar. Vi måste skicka hanterare till servern så att den vet hur man svarar på inkommande förfrågningar och vilka förfrågningar som ska accepteras.,

vi använder funktionenHandleFunc för att lägga till rutthanterare på webbservern. Det första argumentet accepterar sökvägen den behöver lyssna på /hello. Här talar du om för servern att lyssna på inkommande begäranden för . Det andra argumentet accepterar en funktion som innehåller affärslogiken för att korrekt svara på begäran.

som standard accepterar denna funktion ettResponseWriter för att skicka ett svar tillbaka och ettRequest – objekt som ger mer information om själva begäran., Du kan till exempel komma åt information om de skickade rubrikerna, vilket kan vara användbart för att autentisera begäran.

som du kan se skickar hanteraren ett"Hello!” – meddelande när vi skickar detta svar tillResponseWriter.

nu ska vi prova denna inställning. Starta webbservern med go run server.go och besök . Om servern svarar med"Hello!" kan du fortsätta till nästa steg, där du får lära dig att lägga till grundläggande säkerhet på dina Golang-webbserverrutter.,

Lägg till grundläggande säkerhet på rutter

det är självklart att säkerheten är viktig. Låt oss utforska några grundläggande strategier för att förbättra säkerheten för din go webbserver.

innan vi gör det bör vi ta en stund att öka läsbarheten i vår kod. Låt oss skapahelloHandler – funktionen, som innehåller all logik relaterad till/hello – förfrågan.

den här hanteraren använder objektetRequest för att kontrollera om sökvägen är korrekt. Detta är ett mycket grundläggande exempel på hur du kan använda objektet Request.,

Om sökvägen är felaktig returnerar servern ettStatusNotFound – fel till användaren. För att skriva ett fel till användaren kan du använda metoden http.Error. Observera attStatusNotFound – koden motsvarar ett 404-fel. Alla statuskoder finns i Golang-dokumentationen.

därefter lägger vi till en check för att verifiera typen av förfrågan. Om metoden inte motsvarar GET returnerar servern ett nytt fel. När båda kontrollerna passerar returnerar servern sitt framgångsrespons "Hello!".,

det sista vi behöver göra är att ändra funktionenhandleFunc I funktionenmain() för att acceptera funktionen ovanhelloHandler.

http.HandleFunc("/hello", helloHandler)

nedan följer den fullständiga koden för filenserver.go.

därefter startar vi Go-webbservern med go run server.go. Du kan testa din säkerhet genom att skicka en postbegäran till med ett verktyg som brevbärare eller cURL.

starta en statisk webbserver

i det här steget skapar vi en enkel filserver för att vara värd för statiska filer., Detta kommer att vara ett mycket enkelt tillägg till webbservern.

för att se till att vi har innehåll att tjäna på webbservern, låt oss ändra filenindex.html som finns i mappenstatic. För att hålla det enkelt, lägg bara till en rubrik i filen som säger ”Static Website.”Om du vill kan du lägga till fler filer eller stylingfiler för att få din webbserver att se lite trevligare ut.

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

för att tjäna mappenstatic måste du lägga till två rader kod tillserver.go., Den första raden av kod skapar filserverobjektet med funktionenFileServer. Den här funktionen accepterar en sökväg i http.Dir – typen. Därför måste vi konvertera strängsökvägen"./static” till enhttp.Dir sökvägstyp.

glöm inte att angeHandle – rutten, som accepterar en sökväg och filservern. Den här funktionen fungerar på samma sätt som funktionenHandleFunc, med några små skillnader. För mer information om FileServer – objektet, kontrollera dokumentationen.,

det är dags att prova koden. Brand upp servern med go run server.gooch besök. Du bör se rubriken ”Static Website”.

Acceptera en begäran om inlämning av formulär

slutligen måste webbservern svara på en inlämning av formulär.

låt oss lägga till lite innehåll i mappenform.html I filenstatic. Lägg märke till att formuläråtgärden skickas till /form. Detta innebär att postbegäran från formuläret skickas till ., Själva formuläret ber om inmatning för två variabler: name och address.

nästa steg är att skapa hanteraren för att acceptera/form – begäran. Filenform.html visas redan via filservern och kan nås via

First, the function has to call ParseForm()för att tolka råfrågan och uppdaterar.PostFormochr.Form. Detta gör det möjligt för oss att komma åt värdena name och address via metoden r.FormValue.,

i slutet av funktionen skriver vi båda värdena till ResponseWritermedfmt.Fprintf.

glöm inte att lägga till den nya formulärhanteringsrutten till funktionenmain().

http.HandleFunc("/form", formHandler)

nu ser hela koden ut så här.

prova formhanteraren

Vi kan testa formuläret genom att starta servern medgo run server.go. När servern startar besöker du . Du bör se två inmatningsfält och en Skicka-knapp.,

När du har fyllt i formuläret trycker du på knappensubmit. Servern bör behandla din postförfrågan och visa resultatet på svarssida, t.ex. nedanstående svar.

om du ser resultatet ovan har du skapat din första Golang-webb-och filserver. Grattis!

Om du vill utforska Golang webbservrar ytterligare, Golang HTTP paket dokumentation är full av bra exempel., Denna handledning om att skriva webbappar i Go är en annan stor resurs som täcker de flesta grunderna.

LogRocket: full synlighet i dina webbappar

LogRocket är en frontend programövervakningslösning som låter dig spela upp problem som om de hände i din egen webbläsare. Istället för att gissa varför fel händer, eller Fråga användarna om skärmdumpar och loggdumpar, låter LogRocket dig spela upp sessionen för att snabbt förstå vad som gick fel., Det fungerar perfekt med någon app, oavsett ram, och har plugins för att logga ytterligare sammanhang från Redux, Vuex och @ngrx/store.

förutom att logga Redux-åtgärder och tillstånd registrerar LogRocket konsolloggar, JavaScript-fel, stacktraces, nätverksförfrågningar / svar med rubriker + kroppar, webbläsarmetadata och anpassade loggar. Det instrument också DOM att spela in HTML och CSS på sidan, återskapa pixel-perfekta videor av även de mest komplexa ensidiga appar.

prova det gratis.

Share

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *