Sobre
Turmas
Projetos
Time
Materiais
Artigos
Aulas
PT
EN
Materiais
Materiais
· Backend
5. REST e Design de APIs
Visão geral sobre APIs Restful
30 min de leitura
→
Anterior
4. JSON e Contratos de API
Próximo
6. Outros Estilos de API
→
Nesta página
5.1. REST como estilo arquitetural
A Origem: Por que REST existe?
O Modelo Mental do REST
REST vs RESTful
Checklist rápido
Fontes
5.10. HATEOAS
O Conceito
Exemplo sem HATEOAS (Padrão)
Exemplo com HATEOAS
A Realidade Prática
Checklist rápido
Fontes
5.11. Checklist de design REST
URIs e Recursos
Métodos HTTP (Verbos)
Respostas e Códigos
Segurança e Performance
Fontes Gerais de Design
5.12. Implementação Prática com FastAPI
Estrutura do Projeto
Código da Implementação
Como testar
O que observar:
5.2. Restrições do REST
Cliente-Servidor (Client-Server)
Stateless (Sem Estado)
Cacheável (Cacheable)
Interface Uniforme (Uniform Interface)
Sistema em Camadas (Layered System)
Código sob Demanda (Code on Demand) - *Opcional*
O Desafio do Stateless na Prática
Checklist rápido
Fontes
5.3.1. Anatomia Prática de uma Requisição REST
O Path (Caminho): Path vs Query Params
Path Params (Parâmetros de Caminho)
Query Params (Parâmetros de Consulta)
Como fazer isso com FastAPI
Headers Essenciais e Content Negotiation
`Content-Type: application/json`
`Accept: application/json`
Como o FastAPI lida com Headers por padrão
Resposta: `Content-Type` automático
Requisição: Parsing automático do Body
Header `Accept` não é validado por padrão
Exemplo Prático
O Método e o Payload (Corpo)
Status Codes no Contexto REST
Sucesso
Erro do Cliente (4xx)
Erro do Servidor (5xx)
Checklist Prático
5.3. Recursos, coleções e identificadores
O que é um Recurso?
Substantivos, não Verbos
Coleções vs Documentos
Singleton Resources (Recursos Únicos)
Identificadores
Como fazer isso com FastAPI
Checklist rápido
Fontes
5.4. Convenções de rotas RESTful
Use Plural para Coleções
Hierarquia e Aninhamento
kebab-case nas URLs
Query Params para filtros
Ações que não são CRUD
Como fazer isso com FastAPI
Checklist rápido
Fontes
5.5. CRUD mapeado para HTTP
Create (Criar) -> POST
Read (Ler) -> GET
Update (Atualizar) -> PUT ou PATCH
PUT (Substituição Completa)
PATCH (Atualização Parcial)
Delete (Apagar) -> DELETE
Tabela Resumo
Erro Comum: Tunneling (Túnel)
Como fazer isso com FastAPI
Checklist rápido
Fontes
5.6. Filtros, paginação e ordenação
Filtros (Filtering)
Ordenação (Sorting)
Paginação (Pagination)
Estilo 1: Offset/Limit (Página e Tamanho)
Estilo 2: Cursor (Token)
Estrutura de Resposta Paginada
Checklist rápido
Fontes
5.7. Atualizações parciais e PATCH
PUT vs PATCH
Como implementar PATCH corretamente?
JSON Merge Patch (RFC 7396) - O mais simples
JSON Patch (RFC 6902) - O "avançado"
Recomendação Prática
Checklist rápido
Fontes
5.8. Idempotência e retries
O que é Idempotência?
Como tornar o POST seguro? (Idempotency Keys)
Checklist rápido
Fontes
5.9. Versionamento de APIs
Quando versionar?
Estratégias de Versionamento
Versionamento na URI (Path Versioning) - **Mais Comum**
Versionamento no Header (Header Versioning)
Content Negotiation (Accept Header)
Recomendação: URI Versioning (`/v1/`)
Checklist rápido
Fontes