DEV Community

Cover image for O que é REST ?
Carlos Viana
Carlos Viana

Posted on • Edited on

O que é REST ?

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.

  1. Cliente-Servidor (Client-Server)
    Separação clara entre cliente e servidor. Cada parte pode evoluir de forma independente, facilitando manutenção e escalabilidade.

  2. 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.

  3. Cacheável (Cacheable)
    Respostas podem ser cacheadas para reduzir latência e tráfego, melhorando desempenho.

  4. 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.
  5. Sistema em Camadas (Layered System)
    A arquitetura pode conter várias camadas (balanceadores, firewalls, caches), mantendo o isolamento de cada nível.

  6. 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)