Bling Limit API é uma solução robusta para monitorar e limitar as requisições feitas a sua API, prevenindo o abuso e garantindo uma distribuição equitativa dos recursos. Ideal para sistemas que necessitam de um controle refinado sobre o tráfego de entrada.
- Limite de Requisições: Impõe um limite na quantidade de requisições que podem ser feitas por um determinado código dentro de um intervalo de tempo.
- Notificações de Violação: Envio de notificações sempre que o limite de requisições for excedido, permitindo ações imediatas.
- Suporte a Docker Swarm: Facilmente escalável com suporte a Docker Swarm para lidar com altas cargas de tráfego.
- Integração com Redis: Utiliza Redis para gerenciar estados e contadores de requisições de forma eficiente.
Para começar a utilizar a Bling Limit API, siga os passos abaixo para configurar o ambiente e rodar a aplicação.
- Docker e Docker Compose
- Uma instância do Redis acessível
- Go (caso deseje compilar localmente)
- Clone o repositório para sua máquina local:
git clone https://github.com/seu-usuario/bling_limit.git
cd bling_limit
-
Certifique-se de que a instância do Redis esteja rodando e acessível pelas configurações definidas na aplicação.
-
Defina as variáveis de ambiente necessárias. Você pode fazer isso criando um arquivo
.env
na raiz do projeto:
REDIS_ADDR=redis_host:6379
CALLBACK_ENDPOINT=http://example.com/callback
Substitua redis_host
pelo endereço do seu Redis e o URL pelo endpoint de callback desejado.
- Construa a imagem Docker:
docker build -t bling_limit .
- Inicialize o Docker Swarm (caso ainda não esteja inicializado):
docker swarm init
- Utilize o
docker stack
para implantar a aplicação:
docker stack deploy -c docker-compose.yml bling_stack
Para utilizar a API, envie uma requisição para o endpoint /api/filter
com o payload desejado. A API verificará se o limite de requisições foi excedido e responderá adequadamente.
curl -X POST http://localhost:5000/api/filter -d '{"codigo": "ABC123", "outrosDados": "valor"}'
Distribuído sob a licença MIT. Veja LICENSE
para mais informações.
Meu Portifólio - Guilherme Jansen -Web Developer