Du oppretter en web-server med Golang

Gå er et flott språk for å lage enkle, men effektive web-servere og web-tjenester. Det gir en innebygd HTTP-pakke som inneholder verktøy for å raskt opprette et webområde eller en fil server.

målet med denne opplæringen er å lage en web-server som du kan akseptere en GET-forespørsel og tjene et svar. Vi vil bruke serveren til å tjene statiske filer, fungerer som en filserver. Vi vil deretter gjøre web-serveren svarer til en POST-forespørsel som kommer fra et skjema for innsending, for eksempel en kontakt form.,

Uten videre, la oss utforske hvordan å bygge ditt første web-server med Dra.

– Oppsett

Du må Gå versjon 1.11 eller høyere for å følge denne opplæringen.

I denne delen skal vi opprette alle nødvendige filer, og opprette riktig fil struktur. Etter det, vil vi importerer våre pakker for å teste om oppsettet fungerer. Ikke bekymre deg — oppsett er helt grunnleggende for den Golang web-server.

Opprett følgende filer og mapper i henhold til strukturen nedenfor., Filen server.go sitter ved roten av ditt prosjekt, som gjør det static – mappen, som inneholder to HTML-filer: index.html og form.html.

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

la oss Nå skrive noen kode. Åpne server.go fil og importere den nødvendige pakker. Vi vil bruke fmt for å skrive ut nyttige data til terminalen og log for å skrive ut fatal feil i tilfelle web-serveren krasjer.

net/http er den viktigste pakken., Det inneholder all den funksjonalitet for å opprette en HTTP-klient eller server implementering som en Golang web-server.

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

til Slutt, la oss legge til en enkel main() funksjon server.go fil som skriver ut en melding til terminalen.

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

for Å teste oppsett, starte fiktive server med følgende kommando.

go run server.go

Hvis du har fulgt sammen med oppsett, bør du se følgende resultat i din terminal.,

Starting server at port 8080

Hvis alt ser bra ut, er neste trinn er å opprette en web-server.

Starte en web-server med FÅ ruter

På dette stadiet, vil vi opprette en web-server som faktisk serveres på port 8080 og kan svare på innkommende GET-forespørsler.

La oss endre koden i vår main() funksjon for å starte en web-server på port 8080. ListenAndServe metoden er eksportert av http pakkedata vi importerte i trinn én. Denne metoden gjør det mulig for oss å starte web-server, og angi porten for å lytte etter innkommende forespørsler.,

Merk at porten parameteren må være bestått som en streng prepended av kolon tegnsetting. Den andre parameteren aksepterer en behandler til å konfigurere serveren for HTTP/2. Imidlertid, dette er ikke viktig for denne opplæringen, slik at vi kan trygt passere nil som andre argument.

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

På dette punktet, serveren kan starte, men det fortsatt ikke vet hvordan de skal håndtere forespørsler. Vi trenger å passere behandlere til serveren slik at den vet hvordan du skal svare på innkommende forespørsler og som ber om å akseptere.,

Vi vil bruke HandleFunc funksjon for å legge til ruten behandlere til web-serveren. Det første argumentet godtar banen det er behov for å lytte til /hello. Her forteller du at serveren skal lytte etter innkommende forespørsler til . Det andre argumentet aksepterer en funksjon som holder forretningslogikken til riktig svare på forespørselen.

som standard er denne funksjonen aksepterer en ResponseWriter for å sende et svar tilbake, og en Request objekt som gir mer informasjon om forespørselen selv., Du kan For eksempel få tilgang til informasjon om den sendte hoder, noe som kan være nyttig for å godkjenne forespørselen.

Som du kan se, det handler sender en "Hello!” melding som vi passerer dette svaret til ResponseWriter.

la oss Nå prøve ut dette oppsettet. Starte web-server med go run server.go og besøk . Hvis serveren svarer med "Hello!", kan du fortsette til neste trinn, hvor du vil lære hvordan du legger til grunnleggende sikkerhet til din Golang web server ruter.,

Legg til grunnleggende sikkerhet for å ruter

Det går uten å si at sikkerhet er viktig. La oss utforske noen grunnleggende strategier for å forbedre sikkerheten av din Go web-server.

Før vi gjør det, bør vi ta et øyeblikk for å øke lesbarheten til koden vår. La oss lage helloHandler funksjon, som har all logikk knyttet til /hello forespørsel.

Dette handler bruker Request objekt for å sjekke om den valgte banen er riktig. Dette er et veldig enkelt eksempel på hvordan du kan bruke Request objekt.,

Hvis banen er feil, tjeneren returnerer en StatusNotFound feil til brukeren. Å skrive en feilmelding til brukeren, kan du bruke http.Error metode. Legg merke til at StatusNotFound – koden svarer til en 404-feil. Alle status-koder kan bli funnet i Golang dokumentasjon.

Neste, vil vi legge til en sjekk for å kontrollere type forespørsel. Hvis metoden ikke svarer til GET, tjeneren returnerer en ny feil. Både når du sjekker pass, returnerer tjeneren sin suksess svar "Hello!".,

Det siste vi trenger å gjøre er å endre handleFunc funksjon i vår main() funksjon for å godta ovenfor helloHandler funksjon.

http.HandleFunc("/hello", helloHandler)

Nedenfor er en fullstendig kode for din server.go – filen.

Neste, vil vi begynne å Gå web-server med go run server.go. Du kan teste din sikkerhet ved å sende en POST-forespørsel til ved hjelp av et verktøy som Postbud eller krøller seg.

Start en statisk web-server

I dette trinnet, vil vi lage en enkel fil-server til å være vert for statiske filer., Dette vil være en svært enkel tillegg til web-serveren.

for Å være sikker på at vi har innhold for å tjene på web-serveren, la oss endre index.html fil som ligger i en static mappe. For å holde ting enkelt, bare legge til en overskrift til filen som sier «Static Website.»Hvis du vil, kan du legge til flere filer eller styling filer for å gjøre din web server til å se litt penere.

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

for Å tjene static mappe, må du legge til to linjer med kode til server.go., Den første linjen med kode skaper file server-objektet ved å bruke FileServer funksjon. Denne funksjonen aksepterer en bane i http.Dir type. Derfor må vi konvertere streng sti "./static” en http.Dir banen type.

ikke glem å angi Handle rute, som aksepterer en bane og filserveren. Denne funksjonen fungerer på samme måte som HandleFunc funksjon, med noen små forskjeller. For mer om FileServer objekt, kan du se i dokumentasjonen.,

Det er på tide å prøve ut den koden. Brann opp serveren med go run server.go og besøk . Skal du se «Static Website» header.

Godta en form for innsending POST-forespørsel

til Slutt, web-serveren til å svare på et skjema for innsending.

La oss legge til litt innhold til form.html fil i static mappe. Legg merke til at den form handlingen er sendt til /form. Dette betyr at POST-forespørsel fra skjemaet vil bli sendt til ., Selve skjemaet ber om innspill for to variabler: name og address.

neste trinn er å skape handler om å akseptere /form forespørsel. form.html filen er allerede betjenes via Filserveren, og kan nås via

First, the function has to call ParseForm() for å analysere raw spørring og oppdatering r.PostForm og r.Form. Dette vil tillate oss å få tilgang til name og address verdier via r.FormValue metode.,

På slutten av funksjon, vi skriver begge verdiene til ResponseWriter med fmt.Fprintf.

ikke glem å legge til den nye skjemabehandling rute til main() funksjon.

http.HandleFunc("/form", formHandler)

Nå, full koden ser slik ut.

Prøver ut behandling av skjema

Vi kan teste skjemaet ved å starte server med go run server.go. Når serveren starter, besøk . Du bør se to feltene og en send-knapp.,

Når du har fylt ut skjemaet, trykk på submit – knappen. Serveren skal behandle dine INNLEGG forespørsel og viser deg resultatet på svar side slik som nedenfor respons.

Hvis du ser resultatet ovenfor, du har nå opprettet din første Golang web og fil server. Gratulerer!

Hvis du ønsker å utforske Golang web-servere videre, Golang HTTP pakken dokumentasjon er full av gode eksempler., Denne opplæringen på å skrive web apps i Går er en annen stor ressurs som dekker det meste av det grunnleggende.

LogRocket: Full innsikt i din web apps

LogRocket er en frontend-program for overvåking løsning som lar deg spille av problemer som om de skjedde i din egen nettleser. I stedet for å gjette hvorfor feil skje, eller be brukere for skjermbilder og logg dumper, LogRocket lar deg spille av økt til raskt å forstå hva som gikk galt., Det fungerer perfekt med en hvilken som helst app, uavhengig av rammeverket, og har plugins for å logge ytterligere kontekst fra Redux, Vuex, og @ngrx/butikk.

I tillegg til å logge Redux handlinger og stat, LogRocket poster konsollen logger, JavaScript-feil, stacktraces, nettverk forespørsler/svar med overskrifter + organer, nettleser metadata, og tilpasset logger. Det er også instrumenter DOM for å spille inn HTML og CSS på siden, gjenskape pixel-perfekte videoer av selv de mest komplekse single-side apps.

Prøv det gratis.

Share

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *