Go este un limbaj excelent pentru crearea de servere web simple, dar eficiente și servicii web. Acesta oferă un pachet HTTP încorporat care conține utilități pentru crearea rapidă a unui server web sau a unui fișier.scopul acestui tutorial este de a crea un server web care să accepte o solicitare GET și să servească un răspuns. Vom folosi serverul pentru a servi fișiere statice, acționând ca un server de fișiere. Vom face apoi serverul web să răspundă la o solicitare de postare care provine dintr-o trimitere de formular, cum ar fi un formular de contact.,
fără alte detalii, să explorăm cum să vă construiți primul server web cu Go.
configurare
veți avea nevoie de versiunea 1.11 sau o versiune ulterioară pentru a urma acest tutorial.
în această secțiune, vom crea toate fișierele necesare și vom stabili structura corectă a fișierelor. După aceea, vom importa pachetele noastre pentru a testa dacă configurarea funcționează. Nu vă faceți griji — configurarea este foarte de bază pentru serverul Web Golang.
creați următoarele fișiere și foldere în conformitate cu structura de mai jos., Fișierul server.go
stă la baza proiectului, la fel ca static
dosar, care conține două fișiere HTML: index.html
și form.html
.
- server.go- static/- - index.html- - form.html
acum să scriem un cod. Deschideți fișierul server.go
și importați pachetele necesare. Vom folosi fmt
pentru a imprima date utile la terminal și log
pentru a imprima erori fatale în cazul în care serverul web accidente.
net/http
este cel mai important pachet., Acesta oferă toate funcționalitățile pentru crearea unui client HTTP sau implementarea serverului, cum ar fi un server web Golang.
package mainimport ( "fmt" "log" "net/http")
în cele din Urmă, să adăugați un simplu main()
funcția în server.go
fișier care imprimă un mesaj de la terminal.
func main() { fmt.Printf("Starting server at port 8080\n")}
pentru a testa configurarea, porniți serverul fictiv cu următoarea comandă.
go run server.go
Dacă ați urmat împreună cu configurarea, ar trebui să vedeți următoarea ieșire în terminalul dvs.,
Starting server at port 8080
dacă totul arată bine, următorul pas este crearea unui server web.
pornirea unui server web cu GET routes
în această etapă, vom crea un server web care este de fapt servit pe portul 8080 și poate răspunde solicitărilor GET primite.
să modificăm codul în funcția noastră main()
pentru a porni un server web la portul 8080. ListenAndServe
metoda este exportat către http
pachete noi importate în pasul unu. Această metodă ne permite să pornim serverul web și să specificăm portul pentru a asculta cererile primite.,
rețineți că parametrul port trebuie să fie trecut ca un șir prefixat de punctuație de colon. Al doilea parametru acceptă un handler pentru a configura serverul pentru HTTP/2. Cu toate acestea, acest lucru nu este important pentru acest tutorial, așa că putem trece în siguranță nil
ca al doilea argument.
func main() { fmt.Printf("Starting server at port 8080\n") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) }}
în acest moment, serverul poate porni, dar încă nu știe cum să gestioneze cererile. Trebuie să trecem manipulatorii la server, astfel încât să știe cum să răspundă solicitărilor primite și ce solicitări să accepte.,
vom folosi funcția HandleFunc
pentru a adăuga gestionari de rute la serverul web. Primul argument acceptă calea pe care trebuie să o asculte pentru /hello
. Aici, spuneți serverului să asculte orice solicitări primite pentru . Al doilea argument acceptă o funcție care deține logica de afaceri pentru a răspunde corect la cerere.
în mod implicit, această funcție acceptă un ResponseWriter
pentru a trimite un răspuns și un Request
obiect, care oferă mai multe informații despre cererea în sine., De exemplu, puteți accesa informații despre anteturile trimise, care pot fi utile pentru autentificarea solicitării.
după Cum puteți vedea, agentul trimite un "Hello!”
mesaj ca vom trece de acest răspuns ResponseWriter
.
acum să încercăm această configurare. Începe server web cu go run server.go
și vizitați . Dacă serverul răspunde cu
"Hello!"
, puteți continua la pasul următor, unde veți învăța cum să adăugați securitate de bază rutelor serverului Web Golang.,
adăugați securitate de bază la rute
este de la sine înțeles că securitatea este importantă. Să explorăm câteva strategii de bază pentru a îmbunătăți securitatea serverului dvs.înainte de a face acest lucru, ar trebui să luăm un moment pentru a crește lizibilitatea codului nostru. Să creăm funcția helloHandler
, care deține toată logica legată de solicitarea /hello
.
acest handler utilizează Request
obiect pentru a verifica dacă calea solicitată este corectă. Acesta este un exemplu foarte de bază despre modul în care puteți utiliza obiectul Request
.,
dacă calea este incorectă, serverul returnează utilizatorului o eroare StatusNotFound
. Pentru a scrie o eroare utilizatorului, puteți utiliza metoda http.Error
. Observați că codul StatusNotFound
corespunde unei erori 404. Toate codurile de stare pot fi găsite în documentația Golang.
apoi, adăugăm o verificare pentru verificarea tipului de solicitare. Dacă metoda nu corespunde cu GET
, serverul returnează o nouă eroare. Când ambele verificări trec, serverul returnează răspunsul său de succes "Hello!"
.,
ultimul lucru De care avem nevoie pentru a face este de a modifica handleFunc
funcția în main()
funcția de a accepta cele de mai sus helloHandler
function.
http.HandleFunc("/hello", helloHandler)
mai Jos este codul complet pentru server.go
fișier.
apoi, vom porni serverul Web Go cu go run server.go
. Vă puteți testa securitatea trimițând o solicitare de postare la folosind un instrument precum Poștașul sau cURL.
porniți un server web static
În acest pas, vom crea un server de fișiere simplu pentru a găzdui fișiere statice., Aceasta va fi o adăugare foarte simplă la serverul web.
pentru a ne asigura că avem conținut de servit pe serverul web, să modificăm fișierul index.html
situat în folderul static
. Pentru a păstra lucrurile simple, trebuie doar să adăugați o rubrică la fișierul care spune „Static Website
.”Dacă doriți, puteți adăuga mai multe fișiere sau fișiere de styling pentru a face serverul dvs. web să arate un pic mai frumos.
<html> <head> <title>Static Website</title> </head> <body> <h2>Static Website</h2> </body></html>
Pentru a servi static
folder, va trebui să adăugați două linii de cod pentru a server.go
., Prima linie de cod creează obiectul serverului de fișiere folosind funcția FileServer
. Această funcție acceptă o cale în tipul http.Dir
. Prin urmare, trebuie să convertim calea șirului "./static”
la un tip de cale http.Dir
.
nu uitați să specificați ruta Handle
, care acceptă o cale și serverul de fișiere. Această funcție acționează în același mod ca funcția HandleFunc
, cu unele diferențe mici. Pentru mai multe informații despre obiectul FileServer
, verificați documentația.,este timpul să încercați codul. Porniți serverul cu go run server.go
și vizitați . Ar trebui să vedeți antetul „
Static Website
„.
acceptați o solicitare de trimitere a formularului
În cele din urmă, serverul web trebuie să răspundă la o trimitere a formularului.
să adăugăm conținut în fișierul form.html
din folderul static
. Observați că acțiunea formular este trimis la /form
. Aceasta înseamnă că cererea de postare din formular va fi trimisă la ., Formularul în sine solicită introducerea a două variabile:
name
și address
.
următorul pas este de a crea handler pentru a accepta /form
cerere. form.html
fișier este servit deja prin FileServer și pot fi accesate prin intermediul
First, the function has to call ParseForm()
pentru a analiza prime de interogare și actualizare r.PostForm
și r.Form
. Acest lucru ne va permite să accesați name
și address
valori prin intermediul r.FormValue
metoda.,
la sfârșitul funcției, scriem ambele valori la ResponseWriter
folosind fmt.Fprintf
.
nu uitați să adăugați noua rută de tratare a formularului la funcția main()
.
http.HandleFunc("/form", formHandler)
acum, codul complet arată astfel.putem testa formularul pornind serverul cu go run server.go
. Când serverul pornește, vizitați . Ar trebui să vedeți două câmpuri de intrare și un buton de trimitere.,
atunci Când ați completat formularul, a lovit submit
buton. Serverul ar trebui să proceseze solicitarea dvs. de postare și să vă afișeze rezultatul pe pagina de răspuns , cum ar fi răspunsul de mai jos.
dacă vedeți rezultatul de mai sus, ați creat cu succes primul Golang web și server de fișiere. Felicitări!dacă doriți să explorați serverele web Golang în continuare, documentația pachetului Golang HTTP este plină de exemple excelente., Acest tutorial despre scrierea aplicațiilor web în Go este o altă resursă excelentă care acoperă majoritatea elementelor de bază.
LogRocket: vizibilitate Completă în aplicațiile web
LogRocket este o interfață potrivită soluție de monitorizare care vă permite să reda probleme ca daca s-au întâmplat în propriul browser. În loc de a ghici de ce apar erori, sau de a cere utilizatorilor pentru capturi de ecran și log gropile, LogRocket permite reluarea sesiunii a înțelege rapid ceea ce a mers prost., Funcționează perfect cu orice aplicație, indiferent de cadru, și are pluginuri pentru a înregistra context suplimentar de la Redux, Vuex și @ngrx/store.
În plus față de exploatarea Redux acțiuni și de stat, LogRocket înregistrări consola busteni, erori de JavaScript, stacktraces, rețea cereri/răspunsuri cu antete + organisme, browser-ul de metadate, și personalizate busteni. De asemenea, instrumentează DOM pentru a înregistra HTML și CSS pe pagină, recreând videoclipuri perfecte pentru pixeli chiar și pentru cele mai complexe aplicații cu o singură pagină.
încercați-l gratuit.