Go: gestire l'invio dei form

Go: gestire l'invio dei form

Quando si sviluppano applicazioni web, uno degli aspetti fondamentali è la gestione dei dati inseriti dagli utenti tramite i form. In linguaggio di programmazione Go, questo processo può essere affrontato in modo semplice ed efficace. In questo articolo, esploreremo come gestire l'invio dei form in Go utilizzando il pacchetto standard net/http.

Prima di iniziare, assicuriamoci di avere Go installato nel nostro sistema e una conoscenza di base della sintassi e dei concetti fondamentali del linguaggio.

Prima di poter gestire l'invio dei dati del form, dobbiamo creare la pagina del form stessa. Per farlo, creeremo un file HTML contenente il form con i campi di input necessari. Salviamo questo file come index.html:


<!DOCTYPE html>
<html>
<head>
    <title>Form di esempio</title>
</head>
<body>
    <h1>Compila il form</h1>
    <form action="/submit" method="post">
        <label for="name">Nome:</label>
        <input type="text" id="name" name="name" required>
        <br>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
        <br>
        <input type="submit" value="Invia">
    </form>
</body>
</html>

Questo form è abbastanza semplice e contiene due campi di input: "Nome" e "Email". Quando viene inviato, i dati saranno inviati al server tramite una richiesta HTTP POST.

Ora, creiamo un server Go che gestirà la richiesta del form e i dati inviati dagli utenti. Creiamo un file chiamato main.go e aggiungiamo il seguente codice:


package main

import (
	"fmt"
	"net/http"
)

func formHandler(w http.ResponseWriter, r *http.Request) {
	if r.Method == "POST" {
		// Otteniamo i dati del form dal campo "name" e "email"
		name := r.FormValue("name")
		email := r.FormValue("email")

		// Puoi qui elaborare i dati inviati come preferisci,
		// ad esempio, salvarli nel database o inviarli per email.

		// Inviamo una risposta di conferma all'utente
		fmt.Fprintf(w, "Grazie %s per aver inviato il form!\n", name)
		fmt.Fprintf(w, "Hai inserito l'indirizzo email: %s\n", email)
	} else {
		// Se la richiesta non è di tipo POST, mostriamo il form
		http.ServeFile(w, r, "index.html")
	}
}

func main() {
	http.HandleFunc("/", formHandler)
	http.ListenAndServe(":8080", nil)
}

  1. Il pacchetto net/http viene utilizzato per creare il server e gestire le richieste HTTP.
  2. La funzione formHandler viene chiamata ogni volta che il server riceve una richiesta. Se la richiesta è di tipo POST, i dati del form vengono estratti e gestiti (nel nostro caso, semplicemente stampati a scopo di esempio). Se la richiesta non è di tipo POST, viene servita la pagina del form HTML.
  3. La funzione main avvia il server in ascolto sulla porta 8080.

Per eseguire l'applicazione, apriamo una finestra del terminale, naviga nella cartella in cui si trova main.go, quindi eseguiamo il seguente comando:


go run main.go

Ora, se visitiamo http://localhost:8080 nel nostro browser, dovremmo vedere il form che abbiamo creato in precedenza. Compiliamo il form con i dati richiesti e facciamo clic sul pulsante "Invia". Dovremmo vedere una pagina di conferma che mostra i dati inseriti nel form.

Torna su