Introdução ao REST
REST (Representational State Transfer — Transferência Representacional de Estado) é um estilo arquitetural voltado para o design de sistemas distribuídos, especialmente APIs (Application Programming Interfaces) na web. Proposto por Roy Fielding em sua tese de doutorado em 2000, o REST busca estruturar serviços web de forma simples, escalável e baseada nos princípios do HTTP (Hypertext Transfer Protocol).
Ao contrário de um protocolo ou padrão rígido, o REST é um conjunto de diretrizes que orienta a comunicação entre sistemas de maneira stateless (sem manter estado no servidor), utilizando recursos como entidades identificáveis.
Sua popularidade se deve à capacidade de aproveitar os recursos nativos da web:
- URIs (Uniform Resource Identifiers) para identificar recursos.
- Métodos HTTP para realizar operações.
- Representações como JSON ou XML para transmitir dados.
Princípios Fundamentais
Os princípios do REST derivam de restrições propostas por Fielding para tornar sistemas mais previsíveis, performáticos e interoperáveis.
Cliente-Servidor (Client-Server)
Separação clara entre cliente e servidor. Cada parte pode evoluir de forma independente, facilitando manutenção e escalabilidade.Sem Estado (Stateless)
Cada requisição deve conter todas as informações necessárias para ser processada. O servidor não armazena sessão, o que facilita o escalonamento horizontal.Cacheável (Cacheable)
Respostas podem ser cacheadas para reduzir latência e tráfego, melhorando desempenho.-
Interface Uniforme (Uniform Interface)
Padroniza a interação com recursos por meio de:- Identificação de recursos por URIs (ex.:
/usuarios/123
). - Manipulação por representações (ex.: JSON ou XML).
- Mensagens auto-descritivas com metadados (ex.:
Content-Type
). - HATEOAS (Hypermedia as the Engine of Application State): inclusão de links para ações possíveis.
- Identificação de recursos por URIs (ex.:
Sistema em Camadas (Layered System)
A arquitetura pode conter várias camadas (balanceadores, firewalls, caches), mantendo o isolamento de cada nível.Código Sob Demanda (Code on Demand) – opcional
Possibilidade de o servidor enviar código executável (ex.: JavaScript) ao cliente para ampliar funcionalidades.
Como Funciona
Em uma API RESTful, recursos (usuários, produtos, pedidos, etc.) são expostos como endpoints acessíveis via HTTP. O modelo segue a lógica CRUD (Create, Read, Update, Delete), mapeada para métodos HTTP:
- GET – Ler um recurso.
- POST – Criar um novo recurso.
- PUT – Atualizar recurso existente.
- PATCH – Atualizar parcialmente um recurso.
- DELETE – Remover um recurso.
Elementos principais de uma requisição:
- URI – Identifica o recurso (ex.:
/agents/e370fa57-4757-3604-3648-499e1f642d3f
). - Headers – Metadados (ex.:
Content-Type: application/json
). - Body – Dados enviados (em POST, PUT, PATCH).
- Query Params – Filtros e parâmetros opcionais (ex.:
?idade=30
).
Elementos comuns de uma resposta:
- Código de Status HTTP – Resultado da operação (
200 OK
,201 Created
,404 Not Found
, etc.). - Body – Representação do recurso (JSON, XML, etc.).
- Headers – Informações adicionais (ex.:
Content-Type
,Date
).
Por ser stateless, cada requisição é independente — autenticação e contexto devem ser enviados a cada chamada (ex.: via JWT).
Vantagens
- Simplicidade – Usa padrões HTTP já conhecidos.
- Escalabilidade – Arquitetura stateless facilita expansão.
- Interoperabilidade – Compatível com qualquer linguagem que suporte HTTP.
- Performance com Cache – Reduz carga no servidor.
- Separação de responsabilidades – Cliente e servidor evoluem de forma independente.
Desvantagens
- Falta de padronização rígida – Implementações variam.
- Overfetching/Underfetching – Pode retornar dados de mais ou de menos.
- Segurança – Depende de implementação correta (HTTPS, autenticação).
- HATEOAS pouco usado – Complexidade elevada e baixa adoção prática.
Em resumo, REST mudou a forma como desenvolvemos APIs, oferecendo uma abordagem simples, escalável e integrada à própria web.
📚 Leia mais: Representational State Transfer – Roy Fielding
Top comments (0)