← Voltar ao blog Desenvolvimento

O Que É uma API REST e Como Ela Funciona na Prática

API REST Desenvolvimento

Quando você abre um aplicativo de delivery e vê a lista de restaurantes, ou quando um site mostra a previsão do tempo, existe uma API trabalhando nos bastidores. APIs são a forma como sistemas diferentes conversam entre si, e o estilo REST é, de longe, o mais usado na web. Neste artigo, vou explicar de maneira simples o que é uma API REST, como ela funciona e quais conceitos você precisa conhecer para consumir ou criar uma.

O que é uma API?

API significa Application Programming Interface, ou Interface de Programação de Aplicações. Na prática, é um conjunto de regras que define como um programa pode pedir informações ou ações a outro programa.

Uma analogia clássica é a do restaurante: você (o cliente) não entra na cozinha para preparar o prato. Você faz o pedido ao garçom, que leva até a cozinha e traz o resultado. A API é o garçom: ela recebe o pedido do seu aplicativo, leva até o servidor e devolve a resposta.

E o que significa REST?

REST (Representational State Transfer) é um estilo de arquitetura descrito por Roy Fielding em sua tese de doutorado, em 2000. Ele não é uma tecnologia ou biblioteca, mas um conjunto de princípios para construir APIs que usam o protocolo HTTP de forma padronizada. Os principais princípios são:

  • Cliente-servidor: o cliente (navegador, app) e o servidor são independentes e se comunicam por requisições.
  • Stateless (sem estado): cada requisição deve conter todas as informações necessárias. O servidor não guarda o "contexto" entre uma chamada e outra.
  • Recursos identificados por URLs: cada entidade do sistema (usuário, produto, pedido) tem um endereço próprio.
  • Interface uniforme: as operações são feitas com os métodos padrão do HTTP.
  • Cacheável: as respostas podem indicar se podem ser armazenadas em cache, melhorando a performance.

Recursos e endpoints

Em uma API REST, tudo gira em torno de recursos. Um recurso é qualquer coisa que o sistema gerencia. Cada recurso é acessado por um endpoint, que é uma URL. Por exemplo, em uma API de loja virtual:

https://api.loja.com/produtos        # coleção de produtos
https://api.loja.com/produtos/42     # o produto de ID 42
https://api.loja.com/clientes/7/pedidos  # pedidos do cliente 7

Repare que as URLs usam substantivos no plural, e não verbos. A ação a ser feita é indicada pelo método HTTP.

Os métodos HTTP

Os métodos (ou verbos) HTTP dizem o que você quer fazer com o recurso:

  • GET: buscar dados. Ex.: GET /produtos retorna a lista de produtos.
  • POST: criar um novo recurso. Ex.: POST /produtos com os dados do produto no corpo da requisição.
  • PUT: substituir um recurso inteiro. Ex.: PUT /produtos/42.
  • PATCH: atualizar parcialmente um recurso, como alterar só o preço.
  • DELETE: remover um recurso. Ex.: DELETE /produtos/42.

Essa combinação de URL e método forma o famoso CRUD: Create (POST), Read (GET), Update (PUT/PATCH) e Delete (DELETE).

Anatomia de uma requisição e de uma resposta

Uma requisição HTTP tem, basicamente:

  • Método e URL: o que fazer e onde.
  • Headers (cabeçalhos): informações extras, como o formato dos dados (Content-Type: application/json) e o token de autenticação.
  • Body (corpo): os dados enviados, usado principalmente em POST, PUT e PATCH.

A resposta do servidor traz um código de status, headers e, normalmente, um corpo com os dados em formato JSON.

JSON: a língua das APIs

O JSON (JavaScript Object Notation) é o formato mais usado para trocar dados em APIs REST, por ser leve e fácil de ler tanto para humanos quanto para máquinas. Um produto poderia ser representado assim:

{
  "id": 42,
  "nome": "Teclado Mecânico",
  "preco": 299.90,
  "emEstoque": true,
  "tags": ["periféricos", "gamer"]
}

Códigos de status HTTP

Os códigos de status informam o resultado da requisição. Eles são agrupados por centenas:

  • 2xx (sucesso): 200 OK, 201 Created (recurso criado), 204 No Content (sucesso sem corpo de resposta).
  • 3xx (redirecionamento): 301 Moved Permanently, 304 Not Modified.
  • 4xx (erro do cliente): 400 Bad Request (dados inválidos), 401 Unauthorized (não autenticado), 403 Forbidden (sem permissão), 404 Not Found (recurso não existe).
  • 5xx (erro do servidor): 500 Internal Server Error, 503 Service Unavailable.

Uma boa API usa os códigos corretamente. Retornar 200 com uma mensagem de erro no corpo, por exemplo, é uma prática ruim que dificulta a vida de quem consome a API.

Consumindo uma API com JavaScript

No navegador ou no Node.js, a forma mais simples de chamar uma API é com a função fetch:

const resposta = await fetch('https://api.loja.com/produtos/42');
if (!resposta.ok) {
  throw new Error('Erro: ' + resposta.status);
}
const produto = await resposta.json();
console.log(produto.nome);

Para criar um recurso, basta informar o método, os headers e o corpo:

await fetch('https://api.loja.com/produtos', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ nome: 'Mouse', preco: 89.90 })
});

Autenticação

A maioria das APIs exige que o cliente se identifique. As formas mais comuns são:

  • API Key: uma chave enviada em um header ou na URL. Simples, comum em APIs públicas.
  • Token Bearer (geralmente JWT): o usuário faz login e recebe um token, que é enviado no header Authorization nas próximas requisições.
  • OAuth 2.0: usado quando um aplicativo precisa acessar dados do usuário em outro serviço, como o "Entrar com Google".

Independentemente do método, APIs devem sempre ser acessadas via HTTPS, para que as credenciais não trafeguem em texto puro.

Ferramentas para testar APIs

Antes de integrar uma API ao seu código, é muito útil testá-la manualmente. Ferramentas como Postman, Insomnia, a extensão Thunder Client do VS Code ou o próprio comando curl no terminal permitem montar requisições, enviar e analisar as respostas.

Conclusão

APIs REST são a base da web moderna. Entender recursos, métodos HTTP, códigos de status e JSON te dá a capacidade de integrar praticamente qualquer serviço: pagamentos, mapas, redes sociais, inteligência artificial e muito mais. Um ótimo exercício para fixar o conteúdo é escolher uma API pública gratuita, como a de CEP ou de previsão do tempo, e construir uma pequena página que consuma esses dados.