← Back to list

Applicazioni web con Go

Concetti base per l’implementazione

Renato Mite · 2018-08-07 18:33 · 1 claps · 3.5 min read
#guida #programmare #linguaggio #go #web
Open on Medium ↗
Wiki topics: 🥊 · Combat Sports

Applicazioni web con Go

Concetti base per l’implementazione

In generale, il linguaggio Go ti permette di sviluppare applicazioni console. Un modo per dare ai tuoi utenti un’interfaccia più user-friendly è quello di sviluppare applicazioni web.

L’applicazioni web usa il browser internet per mostrare all’utente pagine web in cui inserire dati e con cui interagire. Riesce a fare ciò avvalendosi di un server locale che risponde alle richieste del browser secondo il protocollo HTTP, in pratica l’applicazione fornisce pagine html con tutto ciò che ruota loro intorno come un sito qualunque.

Il package standard net/http di Go contiene tipi e funzioni per implementare un’applicazione web a partire proprio dal tipo Server che rappresenta un server web.

[embed]http - The Go Programming Language The http package's Transport and Server both automatically enable HTTP/2 support for simple configurations. To enable…golang.org

Il tipo Server si occuperà della comunicazione con il browser attraverso una connessione locale, all’applicazione resta il compito di elaborare i dati e le pagine html per inviarle attraverso il server.

Richieste e Risposte

Per cominciare, è necessario comprendere il meccanismo di richiesta e risposta alla base di una comunicazione HTTP.

Il browser invia una richiesta al server, il server valuta la richiesta e invia una risposta che, nella maggior parte dei casi, comprende la pagina html da mostrare all’utente. D’altro canto, la richiesta del browser è caratterizzata per lo più dall’url ossia dall’indirizzo che compare nella barra di navigazione. Quando l’utente scrive un indirizzo nella barra, il browser chiede al server la risposta per quell’url. Quando l’utente fa click su un link, il link racchiude l’url che il browser chiederà al server. Se nella pagina html c’è un’immagine o il riferimento a un altro tipo di file, il browser chiede quel file al server… e così via.

Il server quindi deve rispondere a diversi tipi di richieste, ma il modo in cui lo fa è uniforme, cioè con una funzione che ha per parametri *un oggetto di tipo Request che rappresenta la richiesta e un oggetto di tipo ResponseWriter con cui scrivere la risposta**.

Questa funzione è rapprentata principalmente dal tipo HandlerFunc

type HandlerFunc func(ResponseWriter, *Request)

e dal metodo dell’interfaccia Handler

type Handler interface { ServeHTTP(ResponseWriter, *Request) }

Le funzioni con questa firma e soprattutto il tipo Handler sono i gestori di richieste usati dal tipo Server per rispondere al browser. Ci sono gestori di richieste con firme leggermente diverse che ad esempio restituiscono un errore o rinviano ad un altro url, ci sono altri gestori che rispondono inviando un file. Tutti i gestori, però, sono accomunati dal fatto che rispondono ad una richiesta specifica o comunque a richieste dello stesso tipo.

Il tipo Server è una struttura e fra i suoi campi c’è proprio Handler di tipo Handler a cui associare il gestore di richiesta con cui rispondere al browser.

Come detto, però, il server deve rispondere a richieste diverse. La soluzione è un gestore server.

Gestore Server

Il gestore server è un oggetto che implementa l’interfaccia Handler, così da associarlo al server, ma anziché rispondere alla richiesta che riceve, la smista ad altri gestori di richieste. Valuta la richiesta, soprattutto in base al suo url, e la passa al gestore di richiesta in grado di rispondere. In gergo è definito moltiplicatore, multiplexer o mux in inglese, da qui il nome del tipo ServerMux definito nel package net/http che fa proprio questo.

Guida Programmare in Linguaggio Go

Guida Programmare in Linguaggio Go

Per approfondire l’uso della libreria http e conoscere i concetti base per l’implementazione di applicazioni web, c’è un capitolo specifico nella nuova edizione della mia guida a Go.

Il capitolo 9 della guida “Programmare in Linguaggio Go” descrive gli elementi del package standard net/http, come adoperare i gestori di richiesta e scrivere le risposte con l’uso dei modelli. Inoltre mostra come implementare un gestore server personale e rispondere a richieste asincrone per pagine dinamiche e API. Tutto ciò è messo in pratica con l’implementazione di un’applicazione web, questa applicazione fornisce un’interfaccia alla libreria per gestire un database di note sviluppata nel capitolo precedente.

9 — Applicazioni Web 9.1 — L’interazione fra client e server web 9.2 — Il server HTTP e i gestori di richiesta 9.3 — Request e ResponseWriter 9.4 — Un piccolo esempio 9.5 — Gestori di richieste particolari 9.6 — Un gestore server personale 9.7 — L’applicazione web per le note 9.8 — I modelli html 9.9 — Mettere insieme i pezzi 9.10 — Homepage e inserimento nota 9.11 — Modificare una nota 9.12 — Rimuovere una nota 9.13 — Chiusura dell’applicazione 9.14 — Richieste asincrone, JSON e API

Nel repository della guida su GitHub all’indirizzo https://github.com/rmite/gobook trovi il codice completo della libreria “webman” con il gestore server personale e tutti i file che compongono l’applicazione: codice, modelli, immagini, stili e script.

[embed]rmite/gobook gobook - Codice descritto nella guida "Programmare in Linguaggio Go".github.com

La guida “Programmare in Linguaggio Go” è disponibile in ebook su Amazon, GooglePlay e Kobo, in libro cartaceo su Amazon.

Buona programmazione!


메타데이터
post_id
7eae526c14ba
slug
applicazioni-web-con-go-7eae526c14ba
url
https://medium.com/@renato-mite/applicazioni-web-con-go-7eae526c14ba
canonical_url
https://medium.com/@renato-mite/applicazioni-web-con-go-7eae526c14ba
author_url
https://medium.com/@renato-mite
status
ok
fetched_at
2026-07-28 00:23:04