Headers Mockados
Os headers mockados permitem simular comportamentos reais de APIs, incluindo cache, paginação, versionamento e muito mais.
🔧 Como Funciona
Headers mockados são definidos no campo headers
de cada método HTTP e são automaticamente enviados como cabeçalhos de resposta:
{
"endpoints": {
"users": {
"GET": {
"body": [...],
"headers": {
"X-Total-Count": "100",
"X-API-Version": "2.0",
"Cache-Control": "max-age=3600"
}
}
}
}
}
📋 Características
- ✅ Flexibilidade Total: Qualquer header HTTP válido
- ✅ Documentação Automática: Aparecem no Swagger automaticamente
- ✅ Por Método: Cada método HTTP pode ter headers específicos
- ✅ Opcional: Endpoints funcionam normalmente sem headers
- ✅ Simulação Realista: Perfeito para testar comportamentos de API
🎯 Casos de Uso Comuns
1. Paginação
Simule APIs com paginação usando headers padrão:
{
"endpoints": {
"posts": {
"GET": {
"body": [
{ "id": 1, "title": "Post 1" },
{ "id": 2, "title": "Post 2" }
],
"headers": {
"X-Total-Count": "150",
"X-Page": "1",
"X-Per-Page": "2",
"X-Total-Pages": "75",
"Link": "</posts?page=2>; rel=\"next\", </posts?page=75>; rel=\"last\""
}
}
}
}
}
Headers de Paginação Úteis:
X-Total-Count
: Total de itensX-Page
: Página atualX-Per-Page
: Itens por páginaX-Total-Pages
: Total de páginasLink
: Links de navegação (RFC 5988)
2. Cache e Performance
Configure headers de cache para simular comportamentos reais:
{
"endpoints": {
"products": {
"GET": {
"body": [...],
"headers": {
"Cache-Control": "public, max-age=3600, s-maxage=7200",
"ETag": "\"product-list-v1.2.3\"",
"Last-Modified": "Wed, 15 Jan 2024 10:30:00 GMT",
"Expires": "Wed, 15 Jan 2024 11:30:00 GMT",
"Vary": "Accept-Encoding, User-Agent"
}
}
},
"products/:id": {
"GET": {
"body": {...},
"headers": {
"Cache-Control": "private, max-age=300",
"ETag": "\"product-1-v2.1.0\"",
"Last-Modified": "Wed, 15 Jan 2024 09:15:00 GMT"
}
}
}
}
}
Headers de Cache Importantes:
Cache-Control
: Diretivas de cacheETag
: Identificador de versão do recursoLast-Modified
: Data da última modificaçãoExpires
: Data de expiraçãoVary
: Headers que afetam o cache
3. Rate Limiting
Simule limitação de taxa de requisições:
{
"endpoints": {
"api/search": {
"GET": {
"body": {...},
"headers": {
"X-RateLimit-Limit": "1000",
"X-RateLimit-Remaining": "999",
"X-RateLimit-Reset": "1705315800",
"X-RateLimit-Window": "3600",
"Retry-After": "3600"
}
}
}
}
}
Headers de Rate Limiting:
X-RateLimit-Limit
: Limite totalX-RateLimit-Remaining
: Requisições restantesX-RateLimit-Reset
: Timestamp do resetX-RateLimit-Window
: Janela de tempoRetry-After
: Tempo para tentar novamente
4. Versionamento de API
Configure headers de versionamento:
{
"endpoints": {
"users": {
"GET": {
"body": [...],
"headers": {
"X-API-Version": "2.1.0",
"X-Deprecated": "false",
"X-Sunset": "2025-12-31",
"X-Min-Client-Version": "1.5.0",
"X-Latest-Version": "2.1.0"
}
}
}
}
}
Headers de Versionamento:
X-API-Version
: Versão atual da APIX-Deprecated
: Se a versão está depreciadaX-Sunset
: Data de descontinuaçãoX-Min-Client-Version
: Versão mínima do clienteX-Latest-Version
: Versão mais recente disponível
5. Segurança
Adicione headers de segurança:
{
"endpoints": {
"secure-data": {
"GET": {
"body": {...},
"headers": {
"Strict-Transport-Security": "max-age=31536000; includeSubDomains",
"X-Content-Type-Options": "nosniff",
"X-Frame-Options": "DENY",
"X-XSS-Protection": "1; mode=block",
"Content-Security-Policy": "default-src 'self'",
"Referrer-Policy": "strict-origin-when-cross-origin"
}
}
}
}
}
Headers de Segurança:
Strict-Transport-Security
: Força HTTPSX-Content-Type-Options
: Previne MIME sniffingX-Frame-Options
: Previne clickjackingX-XSS-Protection
: Proteção XSSContent-Security-Policy
: Política de segurança de conteúdoReferrer-Policy
: Política de referrer
6. CORS
Configure headers CORS para desenvolvimento:
{
"endpoints": {
"api/data": {
"OPTIONS": {
"body": "",
"headers": {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Authorization, X-Requested-With",
"Access-Control-Max-Age": "86400",
"Access-Control-Allow-Credentials": "true"
}
},
"GET": {
"body": {...},
"headers": {
"Access-Control-Allow-Origin": "*",
"Access-Control-Expose-Headers": "X-Total-Count, X-API-Version"
}
}
}
}
}
Headers CORS:
Access-Control-Allow-Origin
: Origens permitidasAccess-Control-Allow-Methods
: Métodos permitidosAccess-Control-Allow-Headers
: Headers permitidosAccess-Control-Max-Age
: Cache do preflightAccess-Control-Expose-Headers
: Headers expostos
7. Localização e Recursos
Headers para recursos criados/modificados:
{
"endpoints": {
"users": {
"POST": {
"body": { "id": 123, "name": "Novo Usuário" },
"headers": {
"Location": "/users/123",
"X-Created-At": "2024-01-15T10:30:00Z",
"X-Resource-ID": "123",
"X-Operation": "create"
}
},
"PUT": {
"body": { "id": 123, "name": "Usuário Atualizado" },
"headers": {
"X-Updated-At": "2024-01-15T11:45:00Z",
"X-Version": "2",
"X-Operation": "update",
"ETag": "\"user-123-v2\""
}
}
}
}
}
Headers de Localização:
Location
: URL do recurso criadoX-Created-At
: Timestamp de criaçãoX-Updated-At
: Timestamp de atualizaçãoX-Resource-ID
: ID do recursoX-Operation
: Tipo de operação
🔍 Headers Personalizados
Você pode criar headers completamente personalizados:
{
"endpoints": {
"custom-api": {
"GET": {
"body": {...},
"headers": {
"X-Company-Name": "MinhaEmpresa",
"X-Environment": "development",
"X-Request-ID": "req_abc123def456",
"X-Processing-Time": "0.045s",
"X-Server-Region": "us-east-1",
"X-Feature-Flags": "feature1,feature2,feature3"
}
}
}
}
}
📚 Documentação Automática
Headers configurados aparecem automaticamente na documentação Swagger:
- Descrição: Cada header é documentado automaticamente
- Exemplo: Valor do header é usado como exemplo
- Tipo: Detectado automaticamente como string
- Visibilidade: Aparece na seção "Response Headers"
💡 Dicas e Melhores Práticas
Convenções de Nomenclatura
- Headers Padrão: Use nomes padrão quando possível (
Cache-Control
,ETag
) - Headers Customizados: Use prefixo
X-
para headers personalizados - Consistência: Mantenha padrão consistente em toda a API
Valores Realistas
- Timestamps: Use formato ISO 8601 (
2024-01-15T10:30:00Z
) - ETags: Use aspas duplas (
"abc123"
) - Cache-Control: Use diretivas válidas (
max-age=3600
) - Números: Use valores realistas para contadores
Organização
- Agrupe por Funcionalidade: Headers relacionados juntos
- Documente Comportamentos: Use comentários quando necessário
- Teste Cenários: Configure diferentes headers para diferentes cenários
Exemplo Completo
{
"endpoints": {
"products": {
"GET": {
"body": [
{ "id": 1, "name": "Produto A", "price": 99.99 },
{ "id": 2, "name": "Produto B", "price": 149.99 }
],
"headers": {
// Paginação
"X-Total-Count": "1000",
"X-Page": "1",
"X-Per-Page": "2",
// Cache
"Cache-Control": "public, max-age=300",
"ETag": "\"products-v1.2.3\"",
// Rate Limiting
"X-RateLimit-Limit": "100",
"X-RateLimit-Remaining": "99",
// Versionamento
"X-API-Version": "2.0",
// Personalizado
"X-Currency": "BRL",
"X-Processing-Time": "0.023s"
}
}
}
}
}
Próximo: Explore Cookies Mockados para simular autenticação e sessões! 🍪