Skip to main content

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