Fácil JavaScript
Buscando e exibindo um usuário
Enunciado
Crie uma função buscarUsuario(id) que faz uma requisição GET para https://jsonplaceholder.typicode.com/users/{id} e exibe no console o nome e o email do usuário. Trate erros de status HTTP e falhas de rede.
Requisitos
- A função deve usar
fetchpara buscar o usuário. - Deve verificar
response.oke lançar erro se o status for >= 400. - Deve usar
response.json()para obter os dados. - Deve exibir
Nome: [name]eEmail: [email]no console.
Código inicial
async function buscarUsuario(id) {
// Seu código aqui
}
buscarUsuario(1);
Saída esperada
Nome: Leanne Graham
Email: Sincere@april.biz
Ver dica
Use await fetch(...), depois await resposta.json(). Verifique resposta.ok antes de converter para JSON.
Mostrar solução
async function buscarUsuario(id) {
try {
const resposta = await fetch(`https://jsonplaceholder.typicode.com/users/${id}`);
if (!resposta.ok) {
throw new Error(`Erro HTTP: ${resposta.status}`);
}
const usuario = await resposta.json();
console.log(`Nome: ${usuario.name}`);
console.log(`Email: ${usuario.email}`);
} catch (erro) {
console.error('Falha na requisição:', erro.message);
}
}
buscarUsuario(1);
Passo a passo
- A função
buscarUsuarioé declarada comoasyncpara podermos usarawait. - Dentro do
try, chamamosfetchcom a URL do usuário e aguardamos a resposta. - Verificamos
resposta.ok: se forfalse, lançamos um erro com o status HTTP. - Convertemos o corpo da resposta para um objeto JavaScript com
await resposta.json(). - Exibimos o nome e o email do usuário no console usando template strings.
- O bloco
catchcaptura qualquer erro (de rede ou o que lançamos) e exibe uma mensagem. - Chamamos a função com o ID 1 para testar.
Por que funciona
O fetch retorna uma Promise que resolve para um objeto Response. A propriedade ok é true para status entre 200 e 299. Se não for ok, lançamos um erro para ser capturado. O método json() lê o corpo e o converte de JSON para objeto. Assim, obtemos os dados do usuário e os exibimos.
Erros comuns
- Esquecer de verificar
resposta.ok: se o status for 404,resposta.json()pode falhar ou retornar dados inesperados. Sempre verifique. - Não usar
awaitemresposta.json():resposta.json()retorna uma Promise; semawait, você terá uma Promise pendente, não o objeto. - Não tratar erros de rede: o
fetchsó rejeita a Promise em falhas de rede (ex.: sem internet). Usetry/catchpara capturar.
Outra forma de resolver
Usar .then() e .catch() em vez de async/await:
function buscarUsuario(id) {
fetch(`https://jsonplaceholder.typicode.com/users/${id}`)
.then(resposta => {
if (!resposta.ok) throw new Error(`Erro HTTP: ${resposta.status}`);
return resposta.json();
})
.then(usuario => {
console.log(`Nome: ${usuario.name}`);
console.log(`Email: ${usuario.email}`);
})
.catch(erro => console.error('Falha na requisição:', erro.message));
}
Essa forma é preferível quando você quer evitar async/await ou está em um ambiente que não suporta.
Saída esperada
Nome: Leanne Graham
Email: Sincere@april.biz