En aquest tema, aprendrem com treballar amb APIs en TypeScript. Les APIs (Application Programming Interfaces) són una part fonamental del desenvolupament web modern, ja que permeten la comunicació entre diferents serveis i aplicacions. Utilitzarem fetch
per fer sol·licituds HTTP i veurem com gestionar les respostes de manera eficient amb TypeScript.
Continguts
- Introducció a
fetch
- Tipant les respostes de l'API
- Exemple pràctic: Consumint una API pública
- Gestió d'errors
- Exercicis pràctics
- Introducció a
fetch
fetch
fetch
és una API moderna per fer sol·licituds HTTP. És una alternativa a XMLHttpRequest
i proporciona una interfície més senzilla i poderosa.
Exemple bàsic de fetch
fetch('https://api.example.com/data') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error));
- Tipant les respostes de l'API
Per aprofitar al màxim TypeScript, és important definir els tipus de les dades que esperem rebre de l'API. Això ens ajuda a evitar errors i a treballar de manera més eficient.
Definint una interfície per a la resposta
Suposem que l'API retorna un objecte amb la següent estructura:
{ "id": 1, "name": "John Doe", "email": "[email protected]" }
Podem definir una interfície per a aquesta resposta:
Utilitzant la interfície amb fetch
fetch('https://api.example.com/user/1') .then(response => response.json()) .then((data: User) => { console.log(data.id); console.log(data.name); console.log(data.email); }) .catch(error => console.error('Error:', error));
- Exemple pràctic: Consumint una API pública
Anem a consumir una API pública per veure com funciona tot plegat. Utilitzarem l'API de GitHub per obtenir informació sobre un usuari.
Definint la interfície
Consumint l'API de GitHub
fetch('https://api.github.com/users/octocat') .then(response => response.json()) .then((data: GitHubUser) => { console.log(`Usuari: ${data.login}`); console.log(`ID: ${data.id}`); console.log(`Avatar: ${data.avatar_url}`); console.log(`Perfil: ${data.html_url}`); }) .catch(error => console.error('Error:', error));
- Gestió d'errors
És important gestionar els errors de manera adequada quan es treballa amb APIs. Això inclou tant errors de xarxa com errors de l'API mateixa.
Exemple de gestió d'errors
fetch('https://api.github.com/users/octocat') .then(response => { if (!response.ok) { throw new Error('Error en la sol·licitud'); } return response.json(); }) .then((data: GitHubUser) => { console.log(`Usuari: ${data.login}`); }) .catch(error => console.error('Error:', error));
- Exercicis pràctics
Exercici 1: Consumir una API de clima
- Busca una API pública de clima (per exemple, OpenWeatherMap).
- Defineix una interfície per a la resposta de l'API.
- Fes una sol·licitud a l'API per obtenir el clima d'una ciutat.
- Mostra la informació del clima a la consola.
Solució
interface Weather { main: { temp: number; humidity: number; }; weather: { description: string; }[]; } fetch('https://api.openweathermap.org/data/2.5/weather?q=Barcelona&appid=YOUR_API_KEY') .then(response => { if (!response.ok) { throw new Error('Error en la sol·licitud'); } return response.json(); }) .then((data: Weather) => { console.log(`Temperatura: ${data.main.temp}`); console.log(`Humitat: ${data.main.humidity}`); console.log(`Descripció: ${data.weather[0].description}`); }) .catch(error => console.error('Error:', error));
Exercici 2: Gestió d'errors avançada
- Modifica l'exercici anterior per gestionar errors de manera més detallada.
- Mostra un missatge d'error diferent per a errors de xarxa i errors de l'API.
Solució
fetch('https://api.openweathermap.org/data/2.5/weather?q=Barcelona&appid=YOUR_API_KEY') .then(response => { if (!response.ok) { if (response.status === 404) { throw new Error('Ciutat no trobada'); } else { throw new Error('Error en la sol·licitud'); } } return response.json(); }) .then((data: Weather) => { console.log(`Temperatura: ${data.main.temp}`); console.log(`Humitat: ${data.main.humidity}`); console.log(`Descripció: ${data.weather[0].description}`); }) .catch(error => { if (error.message === 'Ciutat no trobada') { console.error('Error: La ciutat especificada no existeix.'); } else { console.error('Error:', error); } });
Conclusió
En aquesta secció, hem après com treballar amb APIs en TypeScript utilitzant fetch
. Hem vist com definir interfícies per tipar les respostes de l'API, com gestionar errors i hem practicat amb exemples reals. Amb aquests coneixements, estàs preparat per integrar APIs en les teves aplicacions TypeScript de manera eficient i segura.
Curs de TypeScript
Mòdul 1: Introducció a TypeScript
- Què és TypeScript?
- Configuració de l'entorn de TypeScript
- Tipus bàsics
- Anotacions de tipus
- Compilació de TypeScript
Mòdul 2: Treballant amb Tipus
Mòdul 3: Tipus Avançats
Mòdul 4: Funcions i Mòduls
- Tipus de Funció
- Paràmetres Opcional i per Defecte
- Paràmetres Rest
- Mòduls i Espais de Noms
- Decoradors
Mòdul 5: Programació Asíncrona
Mòdul 6: Eines i Millors Pràctiques
- Linting i Formatació
- Proves de Codi TypeScript
- TypeScript amb Webpack
- TypeScript amb React
- Millors Pràctiques