Het maken van een webserver met Golang

Go is een geweldige taal voor het maken van eenvoudige maar efficiënte webservers en webservices. Het biedt een ingebouwd HTTP-pakket dat hulpprogramma ‘ s bevat voor het snel maken van een web-of bestandsserver.

Het doel van deze tutorial is om een webserver te maken die een GET-verzoek kan accepteren en een antwoord kan geven. We zullen de server gebruiken om statische bestanden te dienen, als een bestandsserver. We laten de webserver dan reageren op een POSTVERZOEK dat afkomstig is van een formulier, zoals een contactformulier.,

zonder verder oponthoud, laten we eens kijken hoe je je eerste webserver met Go kunt bouwen.

Setup

u hebt Go versie 1.11 of hoger nodig om deze tutorial te volgen.

in deze sectie zullen we alle benodigde bestanden aanmaken en de juiste bestandsstructuur vaststellen. Daarna importeren we onze pakketten om te testen of de setup werkt. Maak je geen zorgen — de setup is zeer eenvoudig voor de Golang webserver.

maak de volgende bestanden en mappen aan volgens onderstaande structuur., Het bestand server.go bevindt zich aan de root van uw project, net als de map static, die twee HTML-bestanden bevat: index.html en form.html.

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

laten we nu wat code schrijven. Open het server.go bestand en importeer de vereiste pakketten. We zullen fmt gebruiken om nuttige gegevens naar de terminal af te drukken en log om fatale fouten af te drukken in het geval de webserver crasht.

de net/http is het belangrijkste pakket., Het biedt alle functionaliteit voor het maken van een HTTP-client of server implementatie, zoals een Golang webserver.

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

ten slotte voegen we een eenvoudige main() functie toe in het server.go bestand dat een bericht naar de terminal afdrukt.

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

start de fictieve server met het volgende commando om de setup te testen.

go run server.go

Als u de setup gevolgd hebt, ziet u de volgende uitvoer in uw terminal.,

Starting server at port 8080

als alles er goed uitziet, is de volgende stap het aanmaken van een webserver.

een webserver starten met GET routes

in dit stadium maken we een webserver aan die daadwerkelijk wordt geserveerd op poort 8080 en kan reageren op inkomende GET-verzoeken.

laten we de code in onze main() functie aanpassen om een webserver op poort 8080 te starten. DeListenAndServe methode wordt geëxporteerd door dehttp pakket dat we geïmporteerd hebben tijdens stap één. Deze methode stelt ons in staat om de webserver te starten en de poort op te geven om te luisteren naar inkomende verzoeken.,

merk op dat de poortparameter moet worden doorgegeven als een tekenreeks met dubbele puntpunctie. De tweede parameter accepteert een handler om de server voor HTTP/2 te configureren. Dit is echter niet belangrijk voor deze handleiding, dus we kunnen veilig nil als het tweede argument doorgeven.

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

Op dit moment kan de server starten, maar het weet nog steeds niet hoe verzoeken te behandelen. We moeten handlers doorgeven aan de server zodat deze weet hoe te reageren op inkomende verzoeken en welke verzoeken te accepteren.,

we gebruiken de functie HandleFunc om routehandlers aan de webserver toe te voegen. Het eerste argument accepteert het pad dat het nodig heeft om te luisteren naar /hello. Hier vertel je de server om te luisteren naar inkomende verzoeken voor . Het tweede argument accepteert een functie die de zakelijke logica bevat om correct te reageren op het verzoek.

standaard accepteert deze functie eenResponseWriter om een antwoord terug te sturen en eenRequest object dat meer informatie geeft over het verzoek zelf., U kunt bijvoorbeeld toegang krijgen tot informatie over de verzonden headers, wat handig kan zijn voor het verifiëren van de aanvraag.

zoals u kunt zien, stuurt de handler een "Hello!” bericht terwijl we dit antwoord doorgeven aan de ResponseWriter.

laten we nu deze setup uitproberen. Start de webserver met go run server.go en bezoek . Als de server reageert met "Hello!", kunt u doorgaan met de volgende stap, waar u leert hoe u basisbeveiliging toevoegt aan uw Golang webserver routes.,

basisbeveiliging toevoegen aan routes

Het spreekt vanzelf dat beveiliging belangrijk is. Laten we verkennen een aantal basisstrategieën om de veiligheid van uw Go webserver te verbeteren.

voordat we dat doen, moeten we even de tijd nemen om de leesbaarheid van onze code te vergroten. Laten we de helloHandler functie aanmaken, die alle logica bevat die gerelateerd is aan het /hello verzoek.

deze handler gebruikt hetRequest object om te controleren of het gevraagde pad correct is. Dit is een zeer eenvoudig voorbeeld van hoe je het Request object kunt gebruiken.,

als het pad onjuist is, geeft de server een StatusNotFound fout terug aan de gebruiker. Om een fout naar de gebruiker te schrijven, kunt u de methode http.Error gebruiken. Merk op dat de StatusNotFound code overeenkomt met een 404-fout. Alle statuscodes zijn te vinden in de Golang documentatie.

vervolgens voegen we een controle toe voor het verifiëren van het type verzoek. Als de methode niet overeenkomt met GET, geeft de server een nieuwe fout terug. Als beide controles slagen, geeft de server zijn succes respons "Hello!".,

Het Laatste wat we moeten doen is de handleFunc functie wijzigen in onze main() functie om de bovenstaande helloHandler functie te accepteren.

http.HandleFunc("/hello", helloHandler)

hieronder staat de volledige code voor uw server.go bestand.

vervolgens starten we de go-webserver met go run server.go. U kunt uw beveiliging testen door een BERICHTAANVRAAG te sturen naar met behulp van een tool zoals Postman of cURL.

Start een statische webserver

In deze stap maken we een eenvoudige bestandsserver om statische bestanden te hosten., Dit wordt een zeer eenvoudige toevoeging aan de webserver.

om er zeker van te zijn dat we inhoud op de webserver hebben, laten we het index.html bestand in de static map wijzigen. Om het simpel te houden, voeg je gewoon een kop toe aan het bestand met “Static Website.”Als u wilt, kunt u meer bestanden of styling bestanden toe te voegen om uw webserver er een beetje mooier.

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

om de static map te dienen, moet u twee regels code toevoegen aan server.go., De eerste regel code maakt het object van de bestandsserver aan met de functie FileServer. Deze functie accepteert een pad in het http.Dir type. Daarom moeten we het string pad "./static” converteren naar een http.Dir padtype.

vergeet niet de Handle route op te geven, die een pad en de bestandsserver accepteert. Deze functie werkt op dezelfde manier als de HandleFunc functie, met enkele kleine verschillen. Raadpleeg de documentatie voor meer informatie over het FileServer object.,

Het is tijd om de code uit te proberen. Start de server op met go run server.go en bezoek . U zou de “Static Website” header moeten zien.

accepteer een formulier inzending na aanvraag

ten slotte moet de webserver reageren op een formulier inzending.

laten we wat inhoud toevoegen aan het form.html bestand in de static map. Merk op dat het formulier wordt verzonden naar /form. Dit betekent dat de POST aanvraag van het formulier zal worden verzonden naar ., Het formulier zelf vraagt om invoer voor twee variabelen: name en address.

de volgende stap is het aanmaken van de handler om het /form verzoek te accepteren. Hetform.html bestand wordt al geserveerd via de bestandsserver en kan worden benaderd via

First, the function has to call ParseForm() om de ruwe query te ontleden en bij te werkenr.PostForm enr.Form. Dit geeft ons toegang tot de name en address waarden via de r.FormValue methode.,

aan het einde van de functie schrijven we beide waarden naar ResponseWriter met fmt.Fprintf.

vergeet niet de nieuwe form handler route toe te voegen aan de main() functie.

http.HandleFunc("/form", formHandler)

nu ziet de volledige code er zo uit.

het uitproberen van de form handler

We kunnen het formulier testen door de server te starten met go run server.go. Wanneer de server wordt gestart, bezoek dan . U zou twee invoervelden en een submit-knop moeten zien.,

wanneer u het formulier hebt ingevuld, klikt u op de knop submit. De server moet uw BERICHTAANVRAAG verwerken en u het resultaat tonen op de antwoordpagina zoals het onderstaande antwoord.

Als u het bovenstaande resultaat ziet, hebt u met succes uw eerste Golang web-en bestandsserver aangemaakt. Gefeliciteerd!

Als u Golang webservers verder wilt verkennen, staat de Golang HTTP package documentatie vol met geweldige voorbeelden., Deze tutorial over het schrijven van web apps In Go is een andere geweldige bron die de meeste basisprincipes dekt.

LogRocket: Full visibility into your web apps

LogRocket is een frontend applicatie monitoring oplossing waarmee u problemen opnieuw kunt afspelen alsof ze zich in uw eigen browser hebben voorgedaan. In plaats van te raden waarom fouten gebeuren, of gebruikers te vragen om screenshots en log dumps, LogRocket kunt u de sessie opnieuw af te spelen om snel te begrijpen wat er mis ging., Het werkt perfect met elke app, ongeacht het kader, en heeft plugins om extra context van Redux loggen, Vuex, en @ngrx/store.

naast het loggen van Redux acties en status, logrocket registreert console logs, JavaScript fouten, stacktraces, netwerk verzoeken/reacties met headers + lichamen, browser metadata, en aangepaste logs. Het instrumenteert ook de DOM om de HTML en CSS op te nemen op de pagina, opnieuw pixel-perfecte video ‘ s van zelfs de meest complexe single-page apps.

probeer het gratis.

Share

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *