https://github.com/waelson/go-ratelimiter
https://github.com/waelson/go-ratelimiter
Last synced: 4 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/waelson/go-ratelimiter
- Owner: Waelson
- Created: 2024-03-02T15:23:59.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-15T18:41:57.000Z (about 2 years ago)
- Last Synced: 2025-02-24T15:22:05.517Z (over 1 year ago)
- Language: Go
- Size: 13.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
### Sobre o projeto
Simples implementação de um Rate Limit por meio de um middleware
### Pré Requisitos
- Go 1.22.1
- Redis
- Docker
### Parametrização
Todos as configurações podem ser feitas no arquivo '.env'
```
REDIS_ADDRESS=localhost:6379
IP_RATE_LIMIT=5
TOKEN_RATE_LIMIT=100
IP_BLOCK_DURATION=5
TOKEN_BLOCK_DURATION=1
```
Detalhes do arquivo de configuração
- REDIS_ADDRESS: Endereço do servidor Redis
- IP_RATE_LIMIT: Quantidade de requisições permitidas por segundos SEM o uso de token.
- TOKEN_RATE_LIMIT: Quantidade de requisições permitidas por segundos COM o uso de token.
- IP_BLOCK_DURATION=Tempo de bloqueio em segundos após ultrapassar a quantidade máxima de requisições por segundo SEM utilizar o token
- TOKEN_BLOCK_DURATION: Tempo de bloqueio em segundos após ultrapassar a quantidade máxima de requisições por segundo utilizando o token
### Como executar?
```
docker-compose up --build
```
### Fazendo Request
Usando o endereço IP no browser
```
http://localhost:8080
```
Usando o endereço IP com cURL
```
curl --location http://localhost:8080
```
Usando API_KEY
```
curl --location 'http://localhost:8080/' --header 'API_KEY: 111'
```