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

  1. Importació de Paquets:

    import (
        "fmt"
        "net/http"
    )
    

    Importem els paquets fmt per a la sortida de text i net/http per treballar amb HTTP.

  2. 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.

  3. 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 handler helloHandler 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

  1. Objectiu: Crear un servidor web que respongui a diferents rutes amb diferents missatges.
  2. Instruccions:
    • Crea una ruta /hello que respongui amb "Hola, món!".
    • Crea una ruta /goodbye que respongui amb "Adéu, món!".

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.

© Copyright 2024. Tots els drets reservats