Go este un limbaj de programare interesant pentru construirea de aplicații web moderne, precum și de software de sistem. A creat o mare popularitate după lansare și a alimentat servicii precum Docker, Kubernetes, Terraform, Dropbox și Netflix .
În plus, colecția robustă de pachete încorporate a Go îl face o alegere excelentă pentru programarea web. Acest articol vă va arăta cum să scrieți un server web de bază în Go.
Importați pachetele necesare
Pachetul net/HTTP oferă tot ceea ce este necesar pentru a crea un server web și un client. Acest pachet prezintă câteva funcții utile pentru a gestiona programarea web.
Îl puteți importa adăugând rândul de mai jos la începutul codului sursă:
import "net/http"
Articolul va folosi și pachetul fmt pentru a formata șirurile și pachetul de jurnal pentru a gestiona erorile. Puteți să le importați individual, așa cum se arată mai sus, sau să importați toate pachetele folosind o singură declarație de import:
import (
"fmt"
"log"
"net/http"
)
Puteți continua cu scrierea funcției principale după importarea pachetelor necesare. Continuați și salvați fișierul sursă cu extensia .go . Dacă utilizați Vim , utilizați comanda de mai jos pentru a salva și a ieși din Vim:
:wq server.go
Scrieți funcția principală
Programele Go se află direct în funcția principală, numită corect „main”. Va trebui să efectuați un apel pe server aici. Adăugați următoarele linii la codul sursă și vedeți ce fac:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Exemplul este definirea funcției principale folosind cuvântul cheie func . Go are reguli stricte cu privire la poziția bretei de deschidere, așa că asigurați-vă că bretele de pornire se află pe linia corectă. Prima declarație în principal definește că toate cererile web către calea rădăcină ( "/" ) vor fi gestionate de index, o funcție de tip http.HandlerFunc .
A doua linie pornește serverul web prin intermediul funcției http.ListenAndServe . Semnalizează serverului să asculte continuu cererile HTTP primite pe portul 8080 al serverului. Al doilea parametru al acestei funcții este necesar pentru a bloca programul până la sfârșit.
Deoarece http.ListenAndServe returnează întotdeauna o eroare, exemplul include acest apel într-un jurnal. Apel fatal . Această declarație înregistrează orice mesaje de eroare generate pe partea serverului.
Implementează funcții de procesare
După cum puteți vedea, funcția principală apelează indexul funcției de gestionare pentru a gestiona cererile clientului. Cu toate acestea, exemplul nu a definit încă această funcționalitate pentru serverul său.
Să adăugăm instrucțiunile necesare pentru a face funcția index utilizabilă:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Această funcție preia două argumente diferite de tip http.ResponseWriter și http.Request . Parametrul http.ResponseWriter conține răspunsul serverului la cererea primită, sub forma unui obiect http.Request .
Funcția Fprintf din pachetul fmt este folosită pentru afișarea și manipularea șirurilor de text. Articolul îl folosește pentru a afișa răspunsul serverului la solicitările web. În cele din urmă, elementul r.URL.Path[1:] este folosit pentru a prelua date după calea rădăcină.
Adăugați toate părțile rămase
Serverul dvs. web Go va fi gata după ce ați adăugat toate componentele rămase. Codul va arăta astfel:
import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Prima linie este necesară pentru a compila acest cod de server web Go ca fișier executabil.

Compilați acest cod de server web Go ca fișier executabil