JavaScript
Tema 6 · APIs – Dades obertes per a l'enginyeria
Introducció
Una API (Application Programming Interface) permet que dues aplicacions es comuniquin. A la web, moltes APIs exposen dades en format JSON. Des d'una pàgina web podem consultar APIs públiques per obtenir informació meteorològica, dades de trànsit, preus de l'energia o catàlegs tècnics, i mostrar-les en temps real al nostre panell de control.
Objectius
- Fer peticions HTTP amb
fetch()i processar la resposta JSON - Gestionar errors de xarxa i respostes no vàlides
- Mostrar dades obtingudes d'una API al DOM de manera dinàmica
- Combinar APIs amb JSON per crear petites aplicacions de monitoratge
Fetch bàsic i gestió d'errors
Exemple de consulta a una API pública de predicció meteorològica (gratuïta):
// API gratuïta d'exemple (Open-Meteo)
const url = "https://api.open-meteo.com/v1/forecast?latitude=41.38&longitude=2.17&hourly=temperature_2m&forecast_days=1";
fetch(url)
.then(response => {
if (!response.ok) throw new Error(`HTTP ${response.status}`);
return response.json();
})
.then(data => {
console.log("Dades rebudes:", data);
const temperatura = data.hourly.temperature_2m[0];
document.getElementById("temp-actual").textContent = `${temperatura} °C`;
})
.catch(error => {
document.getElementById("temp-actual").textContent = "Error en carregar dades";
console.error("Fetch error:", error);
});
Exemple complet: estació meteorològica web
Construir una targeta que mostri temperatura i humitat en temps real:
function carregarMeteo() {
fetch("https://api.open-meteo.com/v1/forecast?latitude=41.38&longitude=2.17¤t=temperature_2m,relative_humidity_2m")
.then(res => res.json())
.then(data => {
const t = data.current.temperature_2m;
const h = data.current.relative_humidity_2m;
document.getElementById("info-meteo").innerHTML =
`<strong>Temperatura:</strong> ${t}°C <br> <strong>Humitat:</strong> ${h}%`;
})
.catch(err => {
document.getElementById("info-meteo").textContent = "No disponible";
});
}
// Cridar cada 10 minuts
setInterval(carregarMeteo, 600000);
carregarMeteo();
Exercicis
- Utilitza l'API d'Open-Meteo per obtenir la temperatura màxima i mínima d'avui i mostrar-les en una pàgina web.
- Simula una API local amb un fitxer JSON (com al tema 5) i fes servir
fetchper consumir-la. - Afegeix un botó "Actualitzar" que torni a consultar l'API i actualitzi la interfície sense recarregar la pàgina.
Mini Projecte – Panell de monitoratge d'energia
Dissenya un panell que consulti dades d'una API (real o simulada) per mostrar informació rellevant per a un enginyer:
- Tria una API pública (meteorològica, preu de l'electricitat, qualitat de l'aire...) o crea'n una de simulada amb un JSON local.
- Fes una petició amb
fetch()i mostra les dades principals en targetes (cards) amb CSS. - Inclou un indicador visual (color, icona) que canviï segons el valor (per exemple, verd si la temperatura és òptima, vermell si és extrema).
- Actualitza automàticament cada 5 minuts o mitjançant un botó "Actualitzar".
Documenta el codi perquè un company pugui canviar fàcilment l'API utilitzada.