app.js
const express = require('express');
const axios = require('axios');
const app = express();
// Middleware pour parser le JSON
app.use(express.json());
// Fonction asynchrone pour récupérer des données externes
async function fetchDataFromExternalAPI() {
try {
const response = await axios.get('https://jsonplaceholder.typicode.com/posts/1');
return response.data;
} catch (error) {
throw new Error(`Erreur lors de la récupération des données: ${error.message}`);
}
}
// Route asynchrone utilisant async/await
app.get('/api/data', async (req, res) => {
try {
const data = await fetchDataFromExternalAPI();
res.json({
message: 'Succès',
data: data
});
} catch (error) {
res.status(500).json({
message: 'Erreur interne du serveur',
error: error.message
});
}
});
// Route pour simuler une tâche longue
app.get('/api/long-task', async (req, res) => {
try {
// Simulation d'une tâche longue (ex: traitement de données)
const longTask = async () => {
await new Promise(resolve => setTimeout(resolve, 3000));
return { result: 'Tâche longue terminée!' };
};
const result = await longTask();
res.json(result);
} catch (error) {
res.status(500).json({
message: 'Erreur lors de l’exécution de la tâche longue',
error: error.message
});
}
});
// Démarrer le serveur
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Serveur démarré sur le port ${PORT}`);
});