Computação Jr.
CodeDex
Base de Conhecimento & Glossário · Code Júnior
← Voltar para a trilha Central de Quizzes

Quiz da Trilha: Consumo de APIs

Guia prático para trainees: requisições HTTP, JSON, Fetch API, autenticação com Bearer Token, CORS e Http Client no Laravel.

20 questões 0 de 20 respondida(s)
Questão 1 de 20
Em uma integração com API REST, qual é a principal função de um endpoint e do formato JSON?
Questão 2 de 20
Qual método HTTP é o mais adequado para enviar dados no body e criar um novo recurso em uma API REST?
Questão 3 de 20
Ao enviar um formulário de cadastro para uma API Laravel e receber o status 422, o que aconteceu?
Questão 4 de 20
Qual a diferença entre os status HTTP 401 e 403 ao consumir uma API?
Questão 5 de 20
Ao enviar um objeto JSON no body de uma requisição POST, qual header informa à API que o payload está em JSON?
Questão 6 de 20
Qual é uma pegadinha clássica da Fetch API em JavaScript quando o servidor responde com status 404 ou 500?
Questão 7 de 20
Por que nunca devemos colocar uma API Key secreta diretamente no JavaScript do front-end?
Questão 8 de 20
Uma rota de API funciona perfeitamente no Insomnia/Postman, mas gera erro de CORS no navegador. Por quê?
Questão 9 de 20
Ao integrar com uma API externa e receber o status 429 Too Many Requests, o que está acontecendo?
Questão 10 de 20
Ao consumir uma API externa no Laravel usando a facade Http, por que é importante configurar ->timeout(5)?
Questão 11 de 20
Um trainee escreveu o código abaixo, mas sempre recebe "Promise {}" no console. Qual é o erro?
javascript
async function buscarNota() {
  const res = await fetch('/api/notas/1');
  const dados = res.json();
  console.log(dados);
}
Questão 12 de 20
Compare os dois blocos abaixo. Quando escolher a Opção B (PATCH) em vez da Opção A (PUT)?
javascript
// Opção A (PUT)
fetch('/api/membros/7', {
  method: 'PUT',
  body: JSON.stringify({ nome: 'Ana', email: 'ana@code.br', papel: 'editor', ativo: true })
});

// Opção B (PATCH)
fetch('/api/membros/7', {
  method: 'PATCH',
  body: JSON.stringify({ papel: 'admin' })
});
Questão 13 de 20
Ao enviar um POST para uma API Laravel com o código abaixo, por que o servidor devolveu uma página HTML de erro/login em vez de JSON?
javascript
await fetch('/api/notas', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ title: '' })
});
Questão 14 de 20
Compare as duas chamadas GET abaixo. Por que a Opção B é mais segura que a Opção A ao montar filtros de busca?
javascript
// Opção A
fetch(`/api/notas?busca=${texto}&tag=${tag}`);

// Opção B
const url = new URL('/api/notas', window.location.origin);
url.searchParams.set('busca', texto);
url.searchParams.set('tag', tag);
fetch(url);
Questão 15 de 20
Compare o tempo de execução dos dois jeitos de buscar dois endpoints independentes. O que muda na Opção B?
javascript
// Opção A
const trilhas = await fetch('/api/trilhas').then(r => r.json());
const tags = await fetch('/api/tags').then(r => r.json());

// Opção B
const [trilhas, tags] = await Promise.all([
  fetch('/api/trilhas').then(r => r.json()),
  fetch('/api/tags').then(r => r.json()),
]);
Questão 16 de 20
Analise a resposta HTTP capturada na aba Network do DevTools. O que você deve investigar primeiro?
http
POST https://api.codejr.com.br/api/projetos  ->  422 Unprocessable Content

{
  "message": "O campo prazo é obrigatório.",
  "errors": {
    "prazo": ["O campo prazo é obrigatório."]
  }
}
Questão 17 de 20
Compare as duas formas de configurar o token no Laravel. Por que a Opção A é uma má prática perigosa?
php
// Opção A
Http::withToken(env('GITHUB_TOKEN'))->get('https://api.github.com/user');

// Opção B
Http::withToken(config('services.github.token'))->timeout(5)->get('https://api.github.com/user');
Questão 18 de 20
O que o código Laravel abaixo faz caso a API externa retorne status 500 ou falhe na conexão?
php
$response = Http::acceptJson()
    ->timeout(5)
    ->retry(2, 200)
    ->get('https://api.exemplo.com/clima');

if ($response->failed()) {
    return ['erro' => 'Serviço indisponível'];
}
Questão 19 de 20
Observe o JSON paginado retornado pela API. Como exibir apenas os títulos das notas no front-end?
json
{
  "data": [
    { "id": 1, "title": "CRUD" },
    { "id": 2, "title": "Fetch API" }
  ],
  "meta": { "current_page": 1, "last_page": 4, "total": 40 }
}
Questão 20 de 20
Compare o fluxo: quando vale mais a pena consumir uma API pelo Back-End (Laravel) em vez do Front-End (fetch no browser)?
javascript
// Fluxo A (Browser -> API Externa)
fetch('https://api-pagamento.com/v1/cobrar', { headers: { Authorization: 'Bearer sk_live_123' } });

// Fluxo B (Browser -> Seu Laravel -> API Externa)
fetch('/pagamentos', { method: 'POST', body: JSON.stringify({ planoId: 2 }) });
Ao enviar, você verá sua pontuação e a explicação de cada questão.