## glossário
O que é REST API?
Uma REST API é uma interface que segue os princípios do REST (Representational State Transfer), estilo arquitetural descrito por Roy Fielding em 2000. A ideia central é simples: tudo no sistema é tratado como um recurso, cada recurso tem um endereço (URL), e as ações sobre ele são expressas pelos métodos do próprio HTTP.
Isso significa que a URL identifica o quê e o método indica o que fazer. Em vez de inventar endpoints como /criarUsuario e /deletarUsuario, você tem um único /usuarios e varia o verbo.
Os verbos HTTP e o que cada um significa
GET /usuarios # lista todos
GET /usuarios/42 # busca um específico
POST /usuarios # cria um novo
PUT /usuarios/42 # substitui por completo
PATCH /usuarios/42 # altera apenas alguns campos
DELETE /usuarios/42 # removeDois desses verbos merecem atenção. GET deve ser seguro: chamar não pode alterar nada no servidor. E PUT e DELETE devem ser idempotentes — repetir a mesma chamada dez vezes tem que produzir o mesmo resultado de chamá-la uma vez. Isso é o que permite que um cliente tente de novo com segurança quando a rede falha.
Princípios que definem o REST
- Cliente-servidor — as duas pontas evoluem de forma independente, desde que o contrato se mantenha.
- Sem estado (stateless) — cada requisição carrega tudo que o servidor precisa para respondê-la. O servidor não guarda sessão entre chamadas.
- Cacheável — as respostas indicam se e por quanto tempo podem ser reaproveitadas, o que reduz carga e latência.
- Interface uniforme — os mesmos padrões de URL, verbos e códigos valem para todos os recursos da API.
- Sistema em camadas — proxies, balanceadores e CDNs podem entrar no caminho sem que o cliente precise saber.
Códigos de status: a resposta antes do corpo
O status HTTP comunica o resultado antes mesmo de ler o JSON. Usá-los corretamente é o que separa uma API bem construída de uma que devolve 200 OK com {"erro": true} dentro.
- 2xx — deu certo.
200para sucesso geral,201para recurso criado,204quando não há corpo a devolver. - 4xx — o erro foi do cliente.
400requisição malformada,401não autenticado,403autenticado mas sem permissão,404não existe,429excesso de chamadas. - 5xx — o erro foi do servidor.
500falha interna,503serviço indisponível.
Boas práticas ao projetar
Use substantivos no plural para os recursos (/produtos, não /produto nem /getProdutos). Versione a API desde o início (/v1/produtos), porque mudanças incompatíveis são inevitáveis. Pagine listas longas em vez de devolver dez mil registros de uma vez. E padronize o formato de erro para que o cliente não precise adivinhar a estrutura a cada endpoint. Ao trabalhar com as respostas, o formatador de JSON ajuda a inspecionar payloads grandes.
## faq
Perguntas frequentes
Qual a diferença entre PUT e PATCH?
PUT substitui o recurso inteiro: os campos que você não enviar são apagados ou voltam ao padrão. PATCH aplica uma alteração parcial, mexendo apenas nos campos informados e deixando o resto intacto.
REST é melhor que GraphQL?
Nenhum é universalmente melhor. REST tende a ser mais simples de cachear e de operar, e funciona muito bem quando os recursos são bem definidos. GraphQL brilha quando clientes diferentes precisam de recortes diferentes dos mesmos dados e você quer evitar excesso ou falta de campos na resposta.
O que significa dizer que REST é stateless?
Que o servidor não guarda memória entre uma requisição e outra. Cada chamada precisa levar consigo tudo que é necessário, incluindo a credencial de autenticação. Isso é o que permite escalar horizontalmente: qualquer servidor do cluster pode atender qualquer requisição.