HTTPBin para Testes de APIs e API Gateway | Artigo | Docker
- HTTPBin para Testes de APIs e API Gateway | Artigo | Docker
Visão Geral
O httpbin é um serviço HTTP simples utilizado para inspecionar e testar requisições HTTP. Ele expõe diversos endpoints que retornam informações detalhadas sobre a request recebida, permitindo validar comportamento de:
- API Gateways (como roteamento, headers, autenticação)
- Clientes HTTP (curl, Postman, SDKs)
- Middlewares (proxy, cache, rate limit)
- Balanceamento e reescrita de rotas
Pode ser utilizado tanto via serviço público quanto localmente via container.
Subindo o HTTPBin via Docker
docker run -d \
--name httpbin \
-p 8080:80 \
kennethreitz/httpbin
Acesso:
http://localhost:8080
Principais Endpoints
GET
Retorna dados da requisição GET:
curl http://localhost:8080/get
Resposta inclui:
- headers
- query params
- IP de origem
POST
Permite envio de body:
curl -X POST http://localhost:8080/post \
-H "Content-Type: application/json" \
-d '{"name":"teste"}'
Valida:
- payload enviado
- headers
- encoding
Headers
Retorna os headers enviados:
curl http://localhost:8080/headers
Útil para validar:
- autenticação (Authorization)
- headers customizados
- manipulação por API Gateway
Status Code
Simula respostas HTTP específicas:
curl http://localhost:8080/status/200
curl http://localhost:8080/status/404
curl http://localhost:8080/status/500
Permite testar:
- fallback
- retry
- circuit breaker
Delay
Simula latência:
curl http://localhost:8080/delay/3
Retorna após 3 segundos.
Uso:
- timeout
- retry policy
- comportamento de gateway sob lentidão
IP
Retorna o IP de origem:
curl http://localhost:8080/ip
Muito usado para validar:
- proxy reverso
- X-Forwarded-For
- balanceamento
User-Agent
curl http://localhost:8080/user-agent
Valida:
- identificação de cliente
- alteração via gateway
Anything
Endpoint genérico que aceita qualquer método:
curl -X PUT http://localhost:8080/anything/test
Retorna:
- método
- path
- headers
- body
Ideal para debug completo.
Testando com API Gateway
Exemplo: roteamento básico
Configuração esperada no gateway:
- rota:
/api/test - upstream:
http://httpbin:80/get
Teste:
curl http://gateway:porta/api/test
Validação:
- resposta deve refletir
/get - verificar headers injetados pelo gateway
Exemplo: injeção de header
Configurar gateway para adicionar header:
X-Test: gateway
Teste:
curl http://gateway:porta/api/test
Validar:
"headers": {
"X-Test": "gateway"
}
Exemplo: autenticação
Enviar token:
curl http://gateway:porta/api/test \
-H "Authorization: Bearer token123"
Validar no httpbin:
"Authorization": "Bearer token123"
Exemplo: rewrite de rota
Gateway:
- entrada:
/v1/users - upstream:
/anything/users
Teste:
curl http://gateway:porta/v1/users
Resposta deve indicar:
"url": "http://httpbin/anything/users"
Casos de Uso Práticos
- Debug de integração entre serviços
- Teste de políticas de gateway (rate limit, auth, transformações)
- Simulação de falhas (status 500, delay)
- Validação de headers e payloads
- Testes de load balancer e origem de IP
Boas Práticas
- Sempre usar httpbin em ambiente de homologação
- Para testes locais, subir via Docker ao invés de depender do público
- Logar resposta completa para análise
- Combinar com ferramentas como curl e scripts automatizados
Exemplo Completo de Teste
curl -X POST http://gateway:porta/api/test \
-H "Authorization: Bearer 123" \
-H "X-Debug: true" \
-d '{"data":"teste"}'
Validar no retorno:
- headers chegaram corretamente
- body não foi alterado
- rota foi corretamente redirecionada
- gateway não removeu informações críticas