Go er et godt sprog til oprettelse af enkle, men effektive webebservere og webebtjenester. Det giver en indbygget HTTP-pakke, der indeholder værktøjer til hurtigt at oprette en webeb-eller filserver.
målet med denne tutorial er at skabe en .ebserver, der kan acceptere en GET anmodning og tjene et svar. Vi bruger serveren til at betjene statiske filer, der fungerer som en filserver. Vi får derefter webebserveren til at svare på en POSTANMODNING, der kommer fra en formularindgivelse, såsom en kontaktformular.,
uden videre, lad os undersøge, hvordan du opbygger din første Goebserver med Go.
opsætning
Du skal bruge go version 1.11 eller højere for at følge denne vejledning.
i dette afsnit opretter vi alle de nødvendige filer og etablerer den korrekte filstruktur. Derefter importerer vi vores pakker for at teste, om opsætningen fungerer. Bare rolig-opsætningen er meget grundlæggende for Golang serverebserver.
Opret følgende filer og mapper i henhold til nedenstående struktur., Filen server.go
sidder ved roden af dit projekt, som ikke static
mappe, der indeholder to HTML-filer: index.html
og form.html
.
- server.go- static/- - index.html- - form.html
lad os nu skrive noget kode. Åbn server.go
filen, og importer de nødvendige pakker. Vi bruger fmt
til at udskrive nyttige data til terminalen og log
til at udskrive fatale fejl, hvis webebserveren går ned.
net/http
er den vigtigste pakke., Det giver al funktionalitet til oprettelse af en HTTP-klient eller serverimplementering, såsom en Golang .ebserver.
package mainimport ( "fmt" "log" "net/http")
Endelig, lad os tilføje en enkel main()
funktion i server.go
fil, der udskriver en besked til terminalen.
func main() { fmt.Printf("Starting server at port 8080\n")}
for at teste opsætningen skal du starte den fiktive server med følgende kommando.
go run server.go
Hvis du fulgte opsætningen, skal du se følgende output i din terminal.,
Starting server at port 8080
Hvis alt ser godt ud, er det næste trin at oprette en .ebserver.
start af en GETEBSERVER med GET routes
På dette tidspunkt opretter vi en .ebserver, der faktisk serveres på port 8080 og kan svare på indgående GET-anmodninger.
lad os ændre koden i vores main()
funktion for at starte en functionebserver i port 8080. ListenAndServe
– metoden eksporteres afhttp
– pakken, vi importerede under trin et. Denne metode giver os mulighed for at starte webebserveren og specificere porten til at lytte til indgående anmodninger.,
Bemærk, at portparameteren skal overføres som en streng, der er forankret ved kolon tegnsætning. Den anden parameter accepterer en handler til at konfigurere serveren til HTTP/2. Dette er dog ikke vigtigt for denne tutorial, så vi kan sikkert passere nil
som det andet argument.
func main() { fmt.Printf("Starting server at port 8080\n") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) }}
på dette tidspunkt kan serveren starte, men den ved stadig ikke, hvordan man håndterer anmodninger. Vi er nødt til at videregive håndterer til serveren, så den ved, hvordan man reagerer på indgående anmodninger, og hvilke anmodninger der skal accepteres.,
Vi bruger funktionen HandleFunc
til at tilføje rutehåndterere til webebserveren. Det første argument accepterer den sti, den har brug for for at lytte til /hello
. Her beder du serveren om at lytte til eventuelle indgående anmodninger om . Det andet argument accepterer en funktion, der holder forretningslogikken til korrekt at svare på anmodningen.
Som standard er denne funktion accepterer en ResponseWriter
for at sende et svar tilbage, og en Request
objekt, som giver mere information om selve anmodningen., Få adgang til oplysninger om de sendte overskrifter, hvilket kan være nyttigt til godkendelse af anmodningen.
som du kan se, sender handleren en "Hello!”
besked, når vi sender dette svar til ResponseWriter
.lad os nu prøve denne opsætning. Start webebserveren med go run server.go
og besøg . Hvis serveren reagerer med
"Hello!"
, kan du fortsætte til næste trin, hvor du lærer, hvordan du tilføjer grundlæggende sikkerhed til dine Golang serverebserverruter.,
Tilføj grundlæggende sikkerhed til ruter
det siger sig selv, at sikkerhed er vigtig. Lad os udforske nogle grundlæggende strategier for at forbedre sikkerheden på din Go-serverebserver.
før vi gør det, bør vi tage et øjeblik for at øge læsbarheden af vores kode. Lad os oprette funktionen helloHandler
, som indeholder al logikken relateret til /hello
anmodning.
denne handler bruger objektetRequest
til at kontrollere, om den ønskede sti er korrekt. Dette er et meget grundlæggende eksempel på, hvordan du kan bruge objektet Request
.,
hvis stien er forkert, returnerer serveren en StatusNotFound
fejl til brugeren. For at skrive en fejl til brugeren kan du bruge http.Error
metoden. Bemærk, atStatusNotFound
kode svarer til en 404 fejl. Alle statuskoder findes i Golang-dokumentationen.
dernæst tilføjer vi en check for at verificere typen af anmodningen. Hvis metoden ikke svarer til GET
, returnerer serveren en ny fejl. Når begge checks passerer, returnerer serveren sit succesrespons "Hello!"
.,
den sidste ting, vi skal gøre, er at ændre funktionen handleFunc
i vores main()
for at acceptere ovenstående helloHandler
funktion.
http.HandleFunc("/hello", helloHandler)
Nedenfor er den fulde kode til din server.go
fil.
dernæst starter vi Go-webebserveren med go run server.go
. Du kan teste din sikkerhed ved at sende en POSTANMODNING til ved hjælp af et værktøj som Postman eller cURL.
Start en statisk serverebserver
i dette trin opretter vi en simpel filserver til at være vært for statiske filer., Dette vil være en meget enkel tilføjelse til webebserveren.
for at sikre, at vi har indhold, der skal serveres på webebserveren, lad os ændre index.html
fil placeret i static
mappe. For at holde tingene enkle skal du blot tilføje en overskrift til filen, der siger “Static Website
.”Hvis du ønsker det, kan du tilføje flere filer eller stylingfiler for at få din .ebserver til at se lidt pænere ud.
<html> <head> <title>Static Website</title> </head> <body> <h2>Static Website</h2> </body></html>
for At tjene static
mappe, du bliver nødt til at tilføje to linjer kode server.go
., Den første linje med kode opretter filserverobjektet ved hjælp af funktionen FileServer
. Denne funktion accepterer en sti i http.Dir
type. Derfor er vi nødt til at konvertere strengstien "./static”
til en http.Dir
stitype.
glem ikke at angive ruten Handle
, som accepterer en sti og filserveren. Denne funktion fungerer på samme måde som funktionen HandleFunc
med nogle små forskelle. For mere om FileServer
objekt, tjek dokumentationen.,
det er tid til at prøve koden. Fyr op serveren med go run server.go
og besøg . Du bør se overskriften “
Static Website
“.
Accepter en formular indsendelse indlæg anmodning
endelig skal webebserveren svare på en formular indsendelse.
Lad os tilføje noget indhold til form.html
fil static
mappe. Bemærk, at formularhandlingen sendes til /form
. Dette betyder, at POSTANMODNINGEN fra formularen sendes til ., Selve formularen beder om input til to variabler:
name
og address
.
det næste trin er at oprette handleren for at acceptere /form
anmodning. form.html
filen er allerede tjent via Filserveren og kan tilgås via
First, the function has to call ParseForm()
parse rå søgning og opdatering r.PostForm
og r.Form
. Dette giver os adgang til name
og address
værdierne via r.FormValue
metoden.,
i slutningen af funktionen skriver vi begge værdier til ResponseWriter
ved hjælp af fmt.Fprintf
.
glem ikke at tilføje den nye formularhåndtererrute til funktionen main()
.
http.HandleFunc("/form", formHandler)
nu ser den fulde kode sådan ud.
prøv formularen
Vi kan teste formularen ved at starte serveren medgo run server.go
. Når serveren starter, skal du besøge . Du bør se to indtastningsfelter og en Send-knap.,
Når du har udfyldt formularen, skal du trykke på knappen submit
. Serveren skal behandle din POSTANMODNING og vise dig resultatet på svarside som f.eks.
Hvis du ser resultatet ovenfor, har du oprettet din første Golang webeb-og filserver. Tillykke!
Hvis du vil udforske Golang-webebservere yderligere, er Golang http-pakkedokumentationen fuld af gode eksempler., Denne tutorial om at skrive webebapps I Go er en anden stor ressource, der dækker det meste af det grundlæggende.
LogRocket: Fuld synlighed i din web apps
LogRocket er en frontend ansøgning overvågning løsning, som lader dig afspille problemer, som om de er sket i din egen browser. I stedet for at gætte, hvorfor der sker fejl, eller bede brugere om skærmbilleder og logdumps, giver LogRocket dig mulighed for at afspille sessionen igen for hurtigt at forstå, hvad der gik galt., Det fungerer perfekt med enhver app, uanset rammer, og har plugins til at logge yderligere kontekst fra Redu., vue. og @NGR./store.
ud over at logge Redux handlinger og stat, LogRocket registreringer konsol logs, JavaScript-fejl, stacktraces, netværk forespørgsler/svar med overskrifter + organer, browser metadata, og tilpassede logs. Det instrumenter også DOM til at optage HTML og CSS på siden, genskabe pi .el-perfekte videoer af selv de mest komplekse single-Side apps.
prøv det gratis.