O que uma API devolve
Uma API é um balcão. O seu programa não abre o banco nem a cozinha do outro sistema. Ele faz um pedido HTTP e lê a resposta. A resposta tem duas partes: o status, que é um número, e o corpo, que costuma ser JSON.
O pedido
GET pede para ler. POST pede para criar. PATCH altera um pedaço. DELETE remove. A URL diz o recurso, por exemplo /posts/como-ler-uma-mensagem-de-erro. Cabeçalho leva o formato que você aceita e, quando a rota é fechada, a credencial.
const resposta = await fetch("https://exemplo.com/posts");
if (!resposta.ok) {
throw new Error(`A API respondeu ${resposta.status}`);
}
const posts = await resposta.json();resposta.ok só é verdadeiro do 200 ao 299. Sem esse if, um 404 também segue para resposta.json() e você trata uma página de erro como se fosse a lista.
O número
| Status | Significa |
|---|---|
| 200 | Veio o que você pediu para ler |
| 201 | O recurso foi criado |
| 400 | O pedido chegou mal formado |
| 401 | Faltou credencial, ou ela não vale |
| 403 | A credencial vale, mas essa ação é proibida |
| 404 | Não existe recurso nesse endereço |
| 500 | O servidor quebrou do lado de lá |
O corpo
O JSON é o dado. Numa lista de posts, espere um array. Num erro bem feito, espere um objeto com uma frase que um humano lê. Não invente campo: leia a resposta de verdade no painel Network do navegador, na linha da requisição, em Response.
Se o status é 500, o conserto não está no seu fetch. Está no servidor que recebeu o pedido. O corpo, quando existe, costuma dizer qual parte quebrou.
