O que e uma API REST?
Um estilo arquitetural para comunicação entre sistemas usando HTTP de forma padronizada.
API REST, ou Representational State Transfer, e um estilo arquitetural para construir interfaces de comunicação entre sistemas que usam o protocolo HTTP. O termo foi definido por Roy Fielding em sua dissertação de doutorado em 2000 e desde entao se tornou o padrão dominante para comunicação entre aplicações na web. Uma API REST e baseada em recursos: cada recurso (usuário, pedido, produto) tem uma URL única, e as operações sobre ele são feitas com os metodos HTTP padrão: GET para buscar, POST para criar, PUT/PATCH para atualizar e DELETE para remover. Essa simplicidade, combinada com o uso do HTTP onipresente, tornou o REST a escolha natural para a grande maioria das APIs públicas e privadas dos últimos 20 anos.
Os seis princípios REST
Fielding definiu seis restrições que uma API precisa respeitar para ser verdadeiramente RESTful.
Para uma API ser considerada RESTful, ela precisa seguir seis princípios. Interface Uniforme: a API deve ter uma interface consistente com identificação de recursos por URL, manipulação via representações (JSON, XML) e mensagens autodescritivas. Stateless: cada requisição deve conter toda a informação necessária para ser processada, sem depender de estado armazenado no servidor. Client-Server: cliente e servidor são separados, cada um evoluindo de forma independente. Cache: respostas devem indicar se podem ser cacheadas para melhorar performance. Sistema em Camadas: o cliente não sabe se esta se comunicando diretamente com o servidor final ou com um intermediário. Code on Demand (opcional): o servidor pode enviar código executável ao cliente. Na prática, a maioria das "APIs REST" não cumpre todos os princípios stricto sensu, mas são funcionalmente adequadas.
Exemplo prático: API de e-commerce
Recursos, metodos HTTP e status codes trabalhando em conjunto.
Em uma API de e-commerce RESTful, os recursos seriam representados assim: GET /produtos retorna lista de produtos; GET /produtos/123 retorna o produto 123; POST /produtos cria um novo produto com o corpo da requisição; PUT /produtos/123 atualiza o produto 123; DELETE /produtos/123 remove o produto. Os status codes do HTTP comunicam o resultado: 200 OK para sucesso, 201 Created para recurso criado, 400 Bad Request para dados inválidos, 401 Unauthorized para não autenticado, 404 Not Found para recurso inexistente, 500 Internal Server Error para falha do servidor. Essa uniformidade permite que qualquer desenvolvedor entenda a API sem documentação extensa, pois os verbos HTTP e os status codes ja comunicam a semântica das operações.
Exemplo prático: API de autenticação
Tokens JWT e endpoints padrão para login, refresh e logout.
Uma API de autenticação RESTful típica segue um padrão bem estabelecido. POST /auth/login recebe email e senha, valida e retorna um JWT de acesso e um refresh token. POST /auth/refresh recebe o refresh token e retorna um novo JWT de acesso. POST /auth/logout invalida o refresh token. GET /me retorna os dados do usuário autenticado, com o JWT no header Authorization. Esse padrão e tao difundido que a maioria dos frameworks e bibliotecas de autenticação ja o implementa por padrão. A simplicidade e previsibilidade dos endpoints REST tornam a integração muito mais rápida do que abordagens proprietárias ou não padronizadas.
Boas práticas de design REST
Nomes de recursos no plural, versioning na URL e respostas consistentes.
Algumas boas práticas tornam uma API REST muito mais usável. Use substantivos no plural para recursos (/usuários, /pedidos) em vez de verbos (/getUsuário, /criarPedido). Versione a API na URL (/v1/usuários, /v2/usuários) para permitir evolução sem quebrar clientes existentes. Use status HTTP corretamente: não retorne 200 com uma mensagem de erro no corpo. Padronize o formato das respostas: sucesso sempre retorna o mesmo formato, assim como erro. Use pagination para listas longas com parametros como ?page=1&limit=20. Documente com OpenAPI/Swagger para facilitar a integração. Use HTTPS sempre. Versione seu contrato de API como se fosse código: mudancas breaking devem ir para uma nova versão, nunca alterar endpoints existentes.
REST vs outras abordagens
REST e simples e universal. GraphQL e flexível. gRPC e performatico para microservicos.
REST não e a única opção para APIs. GraphQL, criado pelo Facebook, permite que o cliente especifique exatamente quais campos quer retornar, evitando over-fetching e under-fetching. E mais adequado para interfaces complexas com muitas entidades relacionadas. gRPC, criado pelo Google, usa Protocol Buffers e HTTP/2 para comunicação binária de alta performance entre microservicos. E mais adequado para comunicação interna entre serviços onde performance e crítica. REST e mais simples, universalmente suportado, fácil de debugar com qualquer cliente HTTP e ideal para APIs públicas. A escolha depende do caso de uso: REST para APIs genéricas, GraphQL para frontends complexos, gRPC para microservicos internos de alta carga.
Autenticação e segurança em APIs REST
JWT, OAuth2, rate limiting e HTTPS são essenciais em qualquer API de produção.
Segurança em APIs REST exige múltiplas camadas. Autenticação via JWT ou OAuth2 garante que apenas usuários e sistemas autorizados acessem os recursos. Rate limiting protege contra abuso e ataques de DDoS. Validação de input previne injection attacks. HTTPS criptografa os dados em transito. CORS configurado corretamente previne requisições de origens não autorizadas. Headers de segurança como Content-Security-Policy e X-Frame-Options adicionam proteção adicional. Nunca retorne mais informação do que o necessário: o princípio de mínimos privilegios se aplica também as respostas da API. Para APIs públicas, considere também API keys para rastreamento de uso e segmentação de clientes.
Performance e caching em REST
ETags, Cache-Control e CDNs transformam a performance de APIs GET-heavy.
APIs REST tem vantagens naturais para caching por serem stateless. Headers como Cache-Control definem por quanto tempo uma resposta pode ser cacheada. ETags permitem validação condicional: o cliente guarda o ETag, e na próxima requisição envia If-None-Match. Se o recurso não mudou, o servidor retorna 304 Not Modified sem corpo, economizando bandwidth. CDNs podem cachear respostas de endpoints públicos, servindo milhões de requisições sem chegar ao servidor de origem. Para endpoints de alta frequência como /produtos em um e-commerce, uma estrategia de caching bem implementada pode reduzir a carga do banco de dados em 80% ou mais. O design stateless do REST e o que torna esse nível de caching possível.
Documentação de APIs REST
OpenAPI/Swagger transforma contratos de API em documentação viva e testável.
A documentação e uma das partes mais críticas de uma API REST, especialmente se for pública ou usada por times diferentes. OpenAPI (anteriormente Swagger) e o padrão de mercado para documentar APIs REST. Com um arquivo YAML ou JSON descrevendo todos os endpoints, parametros, respostas e modelos, ferramentas como Swagger UI geram automaticamente uma interface gráfica interativa onde desenvolvedores podem testar a API diretamente no browser. Muitos frameworks modernos como FastAPI e ASP.NET Core geram a documentação OpenAPI automaticamente a partir do código. Uma documentação bem mantida economiza horas de comunicação entre times e e um criterio decisivo para adoção de APIs públicas.
Resumo final
REST e o lingua franca das APIs web: simples, padronizado e universalmente suportado.
API REST se tornou o padrão dominante de comunicação entre sistemas na web por razões solidas: usa HTTP que ja e universal, tem semântica clara com verbos e status codes, e fácil de debugar e documentar, e suportado por praticamente todas as linguagens e frameworks. Não e perfeito para todos os cenários, GraphQL e melhor para frontends complexos e gRPC e melhor para comunicação interna de alta performance entre microservicos. Mas para a grande maioria das APIs públicas e privadas, REST oferece o melhor equilibrio entre simplicidade, padronização e adoção. Entender bem seus princípios e boas práticas e uma das habilidades mais fundamentais de qualquer desenvolvedor back-end.
Tutoriais em Video
What is a REST API?
What is a REST API? (IBM)
What is an API? (3 minutes)
APIs for Beginners - How to use an API (Full Course)
REST API concepts and examples
Top 6 Most Popular API Architecture Styles
Conceitos-chave
Recurso
Qualquer entidade do sistema acessível por uma URL única (/usuários, /pedidos/123)
Metodos HTTP
GET (buscar), POST (criar), PUT (substituir), PATCH (atualizar parcialmente), DELETE (remover)
Status Codes
200 OK, 201 Created, 400 Bad Request, 401 Unauthorized, 404 Not Found, 500 Server Error
Stateless
Cada requisição e independente, o servidor não guarda estado de sessão entre chamadas
JSON
Formato de dados mais usado em APIs REST, leve, legível e suportado em todas as linguagens
OpenAPI/Swagger
Padrão para documentar APIs REST de forma estruturada, gerando interfaces interativas
API REST no Instagram
@bytebytego
Reels, API REST
@bytebytego
API REST no Facebook
API REST no X (Twitter)
Links Uteis
O que devs dizem
Depois de padronizar nossas APIs REST com OpenAPI e seguir as convenções de verbos e status codes, o tempo de integração entre times caiu pela metade. O contrato da API e agora a documentação viva do sistema.
O maior erro que cometemos foi não versionar as APIs desde o inicio. Quando precisamos mudar o contrato, quebramos vários clientes. Agora versionamos tudo desde o primeiro endpoint e nunca mais tivemos esse problema.
REST e uma daquelas tecnologias que parece simples mas tem muita profundidade. Aprender a usar os status codes corretamente e projetar recursos pensando no cliente transformou a qualidade das nossas APIs.