cours 1
This commit is contained in:
151
JS/TP1/Exo_API.js
Normal file
151
JS/TP1/Exo_API.js
Normal file
@@ -0,0 +1,151 @@
|
||||
/* exo fait par moi
|
||||
const getuserinfo = (data) => data.results.forEach(element => {
|
||||
console.log(`${element.name.title} ${element.name.last} ${element.name.first} live in ${element.location.country} \(${element.nat}\), contact at ${element.email}`)
|
||||
|
||||
});
|
||||
|
||||
|
||||
const user = async() => {
|
||||
try {
|
||||
const resp = await fetch("https://randomuser.me/api?results=10");
|
||||
const data = await resp.json(resp);
|
||||
console.log(data);
|
||||
} catch (err) {
|
||||
console.error(`Error:${err}`)
|
||||
}
|
||||
}
|
||||
|
||||
const username = async() => {
|
||||
try {
|
||||
const resp = await fetch("https://randomuser.me/api?results=10");
|
||||
const data = await resp.json(resp);
|
||||
data.sort((a,b));
|
||||
getuserinfo(data);
|
||||
} catch (err) {
|
||||
console.error(`Error:${err}`)
|
||||
}
|
||||
}
|
||||
|
||||
username()*/
|
||||
|
||||
|
||||
/*version async*/
|
||||
|
||||
// 1. Affichez les **noms**, le **code pays** ('nat') et l'**email** des utilisateurs
|
||||
// 2. Triez les utilsateurs par sexe
|
||||
// 3. Affichez le drapeau à partir du code pays (`https://restcountries.com/v3.1/alpha/:code`)
|
||||
|
||||
async function getUsers() {
|
||||
try {
|
||||
// Récupère 10 utilisateurs
|
||||
const response = await fetch('https://randomuser.me/api?results=10');
|
||||
// Récupère les données JSON
|
||||
const data = await response.json();
|
||||
// Retourne les résultats
|
||||
const users = data.results;
|
||||
|
||||
return users.map(user => ({
|
||||
name: `${user.name.first} ${user.name.last}`,
|
||||
nat: user.nat,
|
||||
email: user.email,
|
||||
gender: user.gender
|
||||
}));
|
||||
} catch (error) {
|
||||
console.error('Erreur récupération des utilisateurs:', error.message);
|
||||
}
|
||||
}
|
||||
|
||||
async function getCountryInfo(code) {
|
||||
try {
|
||||
// Récupère les informations pour le code pays spécifié
|
||||
const response = await fetch(`https://restcountries.com/v3.1/alpha?codes=${code}`);
|
||||
// Récupère les données JSON
|
||||
const data = await response.json();
|
||||
// Retourne le résultat (le premier élément du tableau)
|
||||
return data[0];
|
||||
} catch (error) {
|
||||
console.error(`Erreur lors de la récupération des info pays ${code}:`, error.message);
|
||||
}
|
||||
}
|
||||
|
||||
async function displayUserInfo() {
|
||||
let users = await getUsers();
|
||||
|
||||
// 1. Affichez les noms, le code pays ('nat') et l'email des utilisateurs
|
||||
console.log('Utilisateurs:', users)
|
||||
|
||||
// 2. Triez les utilisateurs par sexe
|
||||
const sortedUsers = users.sort((a, b) => a.gender.localeCompare(b.gender));
|
||||
console.log('Utilisateurs triés par sexe:', sortedUsers);
|
||||
|
||||
// 3. Affichez le drapeau à partir du code pays
|
||||
for (const user of users) {
|
||||
const countryInfo = await getCountryInfo(user.nat);
|
||||
console.log(`Drapeau pour le code pays ${user.nat}: ${countryInfo.flag}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
displayUserInfo();
|
||||
|
||||
/*version .then*/
|
||||
|
||||
function getUsers() {
|
||||
console.log('log 1')
|
||||
setisLoading(true)
|
||||
fetch('https://randomuser.me/api?results=10')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
console.log('log 3')
|
||||
const users = data.results;
|
||||
return users.map(user => ({
|
||||
name: `${user.name.first} ${user.name.last}`,
|
||||
nat: user.nat,
|
||||
email: user.email,
|
||||
gender: user.gender
|
||||
}));
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Erreur :', error.message);
|
||||
})
|
||||
.finally(() => {
|
||||
console.log('log 4')
|
||||
});
|
||||
|
||||
console.log('log 2 ')
|
||||
}
|
||||
|
||||
function getCountryInfo(code) {
|
||||
return fetch(`https://restcountries.com/v3.1/alpha?codes=${code}`)
|
||||
.then(response => response.json())
|
||||
.then(data => data[0])
|
||||
.catch(error => {
|
||||
console.error(`Erreur lors de la récupération des informations pour le code pays ${code}:`, error.message);
|
||||
});
|
||||
}
|
||||
|
||||
function displayUserInfo() {
|
||||
getUsers()
|
||||
.then(users => {
|
||||
// 1. Affichez les noms, le code pays ('nat') et l'email des utilisateurs
|
||||
console.log('Utilisateurs:', users);
|
||||
|
||||
// 2. Triez les utilisateurs par sexe
|
||||
const sortedUsers = users.sort((a, b) => a.gender.localeCompare(b.gender));
|
||||
console.log('Utilisateurs triés par sexe:', sortedUsers);
|
||||
|
||||
// 3. Affichez le drapeau à partir du code pays
|
||||
const countryPromises = users.map(user => {
|
||||
return getCountryInfo(user.nat).then(countryInfo => {
|
||||
console.log(`Drapeau pour le code pays ${user.nat}: ${countryInfo.flag}`);
|
||||
});
|
||||
});
|
||||
|
||||
return Promise.all(countryPromises);
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Erreur lors de l\'affichage des informations utilisateur:', error.message);
|
||||
});
|
||||
}
|
||||
|
||||
displayUserInfo();
|
||||
Reference in New Issue
Block a user