🌤️Client Web per API Meteo
Programmazione asincrona (async/await), chiamata ad API esterne, parsing dei dati e gestione dell'interfaccia utente.
Programmazione asincrona (async/await), chiamata ad API esterne, parsing dei dati e gestione dell'interfaccia utente.
In questa esercitazione pratica realizzeremo un’interfaccia web dinamica in HTML, CSS e JavaScript per interagire con un’API RESTful pubblica.
Imparerai ad inviare richieste HTTP asincrone (fetch), gestire la risposta JSON e mappare i codici meteo WMO in icone visive.
Questo esempio utilizza l'API di Open-Meteo (combinata con l'API di geocodifica gratuita sempre di Open-Meteo) per permettere di cercare qualsiasi città e visualizzare la temperatura attuale e la velocità del vento.
Il diagramma di componente illustra l'architettura software del nostro client web e la suddivisione delle responsabilità tra i vari moduli:
1. Sviluppo del Front-End (HTML, CSS e JavaScript)
Per realizzare l'applicazione web è necessario sviluppare tre componenti fondamentali:
Interfaccia Utente (index.html e style.css): definisce la struttura visiva dell'applicazione (il modulo di ricerca, le card per i risultati e i messaggi di stato) e ne gestisce la formattazione grafica.
Logica di Controllo (script.js): gestisce gli eventi dell'utente (come il click sul pulsante "Cerca"), convalida l'input, coordina l'aggiornamento dinamico del DOM. In una prossima versione gestirà anche la mappatura dei codici meteo WMO per mostrare le relative icone.
Modulo API (fetch manager): si occupa di orchestrare la comunicazione asincrona con i servizi esterni, gestendo le richieste di rete e la risposta in formato JSON.
2. Integrazione con l'API RESTful Open-Meteo
La comunicazione con il backend di Open-Meteo richiede due distinte chiamate HTTP di tipo GET eseguite in sequenza:
Passo 1 — Geocodifica (Ottenere le coordinate)
I servizi meteo lavorano tramite coordinate geografiche. La prima chiamata traduce il nome della città inserito dall'utente (es. "Roma") in latitudine e longitudine:
Metodo: GET
URL Endpoint: [https://geocoding-api.open-meteo.com/v1/search?name=Roma&count=1&language=it&format=json](https://geocoding-api.open-meteo.com/v1/search?name=Roma&count=1&language=it&format=json)
Risposta: Un oggetto JSON da cui estraiamo latitude e longitude.
Passo 2 — Previsioni Meteo (Ottenere i dati meteorologici)
Sfruttando le coordinate ottenute al Passo 1, effettuiamo la seconda chiamata per recuperare le condizioni meteo attuali:
Metodo: GET
URL Endpoint: [https://api.open-meteo.com/v1/forecast?latitude=](https://api.open-meteo.com/v1/forecast?latitude=){LAT}&longitude={LON}¤t_weather=true
Risposta: Un oggetto JSON contenente i dati del meteo corrente (temperatura, velocità del vento e weathercode WMO).
Nota bene: gli URL sono complessi, ma alla pagina https://open-meteo.com/en/docs vengono generati automaticamente selezionando quello che si vuole ottenere tramite una semplice interfaccia grafica.
Di fatto il progetto consiste quindi nello sviluppo dell'HTML, CSS e JS contenente le opportune chiamate all'API open-meteo:
L'HTML definisce i tre stati principali dell'interfaccia: l'input di ricerca, lo stato di caricamento/errore e il box con i risultati.
Un layout moderno e minimale centrato nello schermo, facile personalizzare durante la lezione.
Il codice implementa due chiamate fetch() in cascata: la prima traduce il nome della città in coordinate (Latitudine e Longitudine), la seconda ottiene il meteo usando quelle coordinate.
Nota bene: puoi anche effettuare una fork del progetto e provare a editarlo/modificarlo
Perché usiamo encodeURIComponent()?
Per evitare bug nel caso l'utente cerchi città con spazi o caratteri speciali (es. "Reggio Emilia" o "San José").
Perché servono 2 chiamate fetch()?
Open-Meteo richiede latitudine e longitudine.
La prima fetch converte il nome della città nelle coordinate.
La seconda fetch tramite le coordinate recupera i dati meteo.
Il blocco try...catch...finally:
Utile per gestire gli errori senza far bloccare l'applicazione e ripristinare l'interfaccia (il bottone Cerca) indipendentemente dal risultato.
Mettiti alla prova e modifica il progetto seguendo le istruzioni allegate:
In questa guida vedremo come creare il progetto sul tuo computer con Visual Studio Code, salvare il codice su GitHub e pubblicare la tua applicazione meteo online con Vercel.
Crea la cartella del progetto: sul tuo computer crea una nuova cartella vuota e chiamala meteo-app.
Apri la cartella su VS Code:
Apri VS Code.
Clicca su File > Apri cartella... (o Open Folder...) e seleziona la cartella meteo-app.
Crea i file di progetto:
Clicca sull'icona Nuovo file nel pannello di sinistra e crea tre file:
index.html
style.css
script.js
Incolla il codice nei rispettivi file e salva (CTRL + S su Windows / CMD + S su Mac).
Testa in locale:
Clicca con il tasto destro sul file index.html e seleziona Open with Live Server (se hai l'estensione installata) oppure apri direttamente il file index.html facendo doppio clic nel tuo browser.
Requisiti: Devi avere un account gratuito su GitHub.com e aver installato Git sul tuo computer.
Clicca sull'icona del Controllo Codice Sorgente (Source Control) nella barra laterale sinistra di VS Code (o premi CTRL + SHIFT + G).
Clicca sul pulsante Pubblica su GitHub (Publish to GitHub).
Se richiesto, autorizza VS Code ad accedere al tuo account GitHub.
Scegli se creare un repository Pubblico (Public) o Privato (Private).
VS Code caricherà automaticamente tutti i file su GitHub!
Vai su GitHub e clicca sul pulsante New (o sul simbolo + in alto a destra) per creare un nuovo Repository.
Dai il nome meteo-app e clicca su Create repository.
Nella schermata successiva, seleziona l'opzione uploading an existing file (carica un file esistente).
Trascina i file index.html, style.css e script.js nella pagina e clicca su Commit changes.
Requisiti: Crea un account gratuito su Vercel.com scegliendo l'opzione "Continue with GitHub".
Inizia un nuovo deployment:
Una volta entrato nella dashboard di Vercel, clicca sul pulsante Add New... in alto a destra e seleziona Project.
Importa il repository:
Nella lista dei tuoi repository GitHub, trova meteo-app e clicca su Import.
Configura il progetto:
Trattandosi di un progetto HTML/CSS/JS nativo (Static), non serve toccare nessuna impostazione speciale (lascia i campi così come sono).
Lancia la pubblicazione:
Clicca sul pulsante Deploy.
Fatto! 🎉:
Dopo pochi secondi vedrai i coriandoli sullo schermo! Vercel ti fornirà un link pubblico (es. meteo-app-tuonome.vercel.app) che potrai condividere con chiunque per mostrare la tua applicazione funzionante online.
Ogni volta che modificherai il codice su VS Code e farai un nuovo Push/Commit su GitHub, Vercel aggiornerà automaticamente la tua pagina web online senza che tu debba fare nulla!
diagramma di deployment (vista fisica) che mostra i nodi coinvolti