Recursos identificáveis
Modele entidades e relações relevantes ao domínio. URLs previsíveis facilitam leitura, documentação e manutenção por equipes diferentes.
Arquitetura de APIs web
REST é a sigla para Representational State Transfer. Trata-se de um estilo arquitetural para sistemas distribuídos. Quando aplicado a uma API web, ajuda a organizar recursos, representações e operações usando a semântica do Protocolo de Transferência de Hipertexto (HTTP).
Definição aplicada
Uma API REST organiza a comunicação em torno de recursos: clientes, pedidos, produtos ou faturas, por exemplo. Cada recurso recebe um identificador e pode ter representações transferidas entre cliente e servidor. JSON é um formato frequente para essas representações, mas REST não depende dele. Uma resposta HTML, XML ou binária também pode participar de uma interface orientada a recursos.
A semântica dos métodos HTTP importa. GET consulta uma representação; POST costuma criar ou disparar processamento; PUT substitui um estado conhecido; PATCH altera parte dele; DELETE solicita remoção. Essa relação não é meramente estética: ela influencia cache, repetição segura, observabilidade e expectativa de clientes intermediários.
Nem toda API HTTP é plenamente REST. É possível publicar um conjunto de URLs com verbos embutidos e payloads JSON sem explorar os princípios arquiteturais do estilo. Em projetos reais, o objetivo não precisa ser perseguir pureza acadêmica, mas usar semântica consistente para reduzir surpresa, custo de integração e risco de evolução.
Fundamentos
Modele entidades e relações relevantes ao domínio. URLs previsíveis facilitam leitura, documentação e manutenção por equipes diferentes.
Use métodos e códigos de status de modo coerente. A interface fica mais compreensível quando cada operação respeita expectativas conhecidas do protocolo.
Versionamento, compatibilidade e documentação reduzem quebras. Uma API útil precisa mudar sem surpreender consumidores existentes.
Framework prático
Liste recursos, identificadores, relações e estados. Uma interface clara começa pela linguagem do negócio e evita endpoints que reproduzem telas ou ações acidentais do sistema atual.
Escolha GET, POST, PUT, PATCH e DELETE segundo a semântica da operação. Documente se chamadas repetidas podem produzir efeito duplicado e quais proteções existem.
Especifique campos obrigatórios, formatos, enumerações e mensagens de erro. Contratos explícitos ajudam consumidores a corrigir problemas sem depender de interpretação informal.
Paginação, filtros, ordenação e limites evitam respostas pesadas e comportamento imprevisível. A estratégia deve permanecer estável à medida que o volume cresce.
Use OpenAPI quando apropriado, mantenha exemplos reais e acompanhe latência, taxa de erro e consumidores afetados por mudanças de versão.
Aplicação prática
O gráfico ilustra frequência relativa em uma API orientada a recursos. A distribuição real varia conforme o domínio e não substitui a análise do contrato.
Decisão técnica
REST. Aproveita a semântica HTTP e tende a funcionar bem quando o domínio pode ser expresso em recursos previsíveis. Seu ecossistema é amplo e a curva de adoção costuma ser menor.
SOAP. É um protocolo formal de mensagens, frequentemente associado a XML e contratos rigorosos. Continua relevante em integrações corporativas existentes e cenários que dependem desse ecossistema.
GraphQL. Oferece uma linguagem de consulta para que clientes solicitem os campos necessários. Pode reduzir excesso ou falta de dados em interfaces complexas, mas exige disciplina própria para autorização, cache e custo de consultas.
Métricas e interpretação
Consistência do contrato. Observe se recursos semelhantes usam padrões semelhantes de URL, paginação, erros e autenticação. Inconsistência aumenta tempo de integração e multiplica exceções no cliente.
Latência por endpoint e percentil. A média esconde lentidões importantes. Analise percentis e separe operações de leitura, escrita e processamento para localizar gargalos com impacto real.
Erros por categoria. Separe falhas do cliente, indisponibilidade do servidor, limite de consumo e dependências externas. Esse recorte orienta correções e evita tentativas automáticas inúteis.
Erros comuns
Colocar verbos em toda URL. Rotas como /criarPedido e /listarPedidos frequentemente indicam que o domínio ainda não foi modelado como recursos. Exceções existem, mas devem ser conscientes.
Responder sempre com status 200. Códigos HTTP comunicam resultado e orientam clientes, monitoramento e recuperação. Um erro escondido em um campo interno reduz interoperabilidade.
Confundir repetição com segurança. Uma rede pode repetir chamadas. Operações sensíveis precisam de chave de idempotência ou mecanismo equivalente para impedir cobrança ou pedido duplicado.
Ignorar paginação. Uma coleção pequena hoje pode crescer rapidamente. Respostas sem limite degradam servidor, rede e consumidor quando a base aumenta.
Leitura sem ambiguidade
Estruturamos contratos REST sob medida, integrações com plataformas existentes e camadas de modernização para sistemas legados.
Conversar sobre integraçãoPerguntas frequentes
Aprofundamento
Leonard Richardson, Mike Amundsen e Sam Ruby. Referência para compreender recursos, hipermídia e evolução de APIs REST.
JJ Geewax. Padrões aplicáveis ao desenho de recursos, operações e contratos previsíveis.