En aquest tema, aprendrem a construir un servidor web simple utilitzant Go. Aquest és un pas fonamental per a qualsevol desenvolupador que vulgui crear aplicacions web amb Go. Començarem amb els conceptes bàsics i progressarem fins a tenir un servidor funcional.
Objectius
- Entendre els conceptes bàsics d'un servidor web.
- Aprendre a utilitzar el paquet
net/http
de Go. - Construir un servidor web que respongui a sol·licituds HTTP.
Conceptes Bàsics d'un Servidor Web
Un servidor web és un programa que processa sol·licituds HTTP i retorna respostes HTTP. Els components clau d'un servidor web inclouen:
- Adreça IP i Port: El servidor escolta sol·licituds en una adreça IP i un port específics.
- Rutes: Les rutes defineixen com el servidor respon a diferents sol·licituds URL.
- Handlers: Els handlers són funcions que processen les sol·licituds i generen respostes.
Utilitzant el Paquet net/http
Go proporciona el paquet net/http
per construir servidors web. Aquest paquet inclou funcions i tipus per treballar amb HTTP.
Exemple Bàsic
A continuació, es mostra un exemple bàsic de com construir un servidor web simple en Go:
package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hola, món!") } func main() { http.HandleFunc("/", helloHandler) fmt.Println("Servidor escoltant en el port 8080") if err := http.ListenAndServe(":8080", nil); err != nil { fmt.Println("Error iniciant el servidor:", err) } }
Explicació del Codi
-
Importació de Paquets:
import ( "fmt" "net/http" )
Importem els paquets
fmt
per a la sortida de text inet/http
per treballar amb HTTP. -
Definició del Handler:
func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hola, món!") }
Definim una funció
helloHandler
que escriu "Hola, món!" a la resposta HTTP. -
Configuració del Servidor:
func main() { http.HandleFunc("/", helloHandler) fmt.Println("Servidor escoltant en el port 8080") if err := http.ListenAndServe(":8080", nil); err != nil { fmt.Println("Error iniciant el servidor:", err) } }
http.HandleFunc("/", helloHandler)
: Assigna el handlerhelloHandler
a la ruta/
.http.ListenAndServe(":8080", nil)
: Inicia el servidor escoltant en el port 8080.
Exercici Pràctic
Exercici 1: Crear un Servidor Web amb Múltiples Rutes
- Objectiu: Crear un servidor web que respongui a diferents rutes amb diferents missatges.
- Instruccions:
- Crea una ruta
/hello
que respongui amb "Hola, món!". - Crea una ruta
/goodbye
que respongui amb "Adéu, món!".
- Crea una ruta
Solució
package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hola, món!") } func goodbyeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Adéu, món!") } func main() { http.HandleFunc("/hello", helloHandler) http.HandleFunc("/goodbye", goodbyeHandler) fmt.Println("Servidor escoltant en el port 8080") if err := http.ListenAndServe(":8080", nil); err != nil { fmt.Println("Error iniciant el servidor:", err) } }
Explicació de la Solució
- Hem afegit una nova funció
goodbyeHandler
que escriu "Adéu, món!" a la resposta HTTP. - Hem configurat dues rutes:
/hello
i/goodbye
, cadascuna amb el seu handler corresponent.
Resum
En aquest tema, hem après a construir un servidor web simple utilitzant Go. Hem vist com utilitzar el paquet net/http
per configurar rutes i handlers, i hem creat un servidor que respon a sol·licituds HTTP. Aquest és el primer pas per construir aplicacions web més complexes amb Go. En els següents temes, explorarem com afegir més funcionalitats al nostre servidor web.
Curs de Programació en Go
Mòdul 1: Introducció a Go
- Introducció a Go
- Configuració de l'Entorn Go
- El Teu Primer Programa en Go
- Sintaxi i Estructura Bàsiques
Mòdul 2: Conceptes Bàsics
Mòdul 3: Estructures de Dades Avançades
Mòdul 4: Gestió d'Errors
Mòdul 5: Concurrència
Mòdul 6: Temes Avançats
Mòdul 7: Desenvolupament Web amb Go
Mòdul 8: Treballant amb Bases de Dades
Mòdul 9: Desplegament i Manteniment
- Construcció i Desplegament d'Aplicacions Go
- Registre
- Monitorització i Optimització del Rendiment
- Millors Pràctiques de Seguretat