Download the PHP package allyson/laravel-http-service without Composer

On this page you can find all versions of the php package allyson/laravel-http-service. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-http-service

HTTP Service - Laravel Package

Pacote Laravel para gerenciamento avançado de requisições HTTP com logging automático e controle de rate limiting.

Características

Instalação

Via Composer

Configuração Inicial

Execute o comando de instalação que irá publicar config e migrations:

Execute as migrations:

Uso Rápido

Métodos Disponíveis

Requisições HTTP

Controles Opcionais

Cache de Requisições

O pacote oferece recursos avançados de cache para otimizar requisições repetidas.

Cache com Expiração Dinâmica

Cache baseado em campos da resposta que contêm informações de expiração:

Máscara de Expiração

Defina como interpretar o valor do campo de expiração:

TTL de Fallback

Use um TTL padrão caso o campo não seja encontrado:

Cache Fixo

Cache com tempo de vida fixo:

Cache Condicional

Cache ativado apenas após múltiplas chamadas:

Desabilitar Cache

Limpar Cache

Cache por Status (cacheOnly / cacheExcept)

Você pode controlar o cache com base nos códigos HTTP da resposta usando os métodos cacheOnly e cacheExcept.

Observações de implementação:

Revisão da implementação

Após revisar src/Services/HttpService.php, os métodos cacheOnly e cacheExcept já estão implementados corretamente e não precisam de alterações funcionais imediatas. Uma sugestão opcional para consistência é que clearCacheStatusFilters() poderia retornar um clone (como outros métodos que configuram comportamento) para manter o padrão imutável/encadeável, mas isso não é obrigatório.

Formatos de Data/Hora Suportados

Para expiresAsDatetime():

Notação de Ponto para Campos Aninhados

Exemplos Completos

Veja examples/cache-expires-examples.php para mais exemplos de uso.

Rate Limiting

O pacote gerencia automaticamente erros 429 (Too Many Requests):

Funcionamento Automático

  1. Antes da requisição: Verifica se o domínio está bloqueado
  2. Durante a requisição: Executa normalmente se não houver bloqueio
  3. Após 429: Bloqueia o domínio automaticamente
  4. Retry-After: Respeita o header Retry-After do servidor

Tratamento de Exceções

Estratégia Wait-on-Rate-Limit

Ao invés de lançar RateLimitException, o serviço pode aguardar de forma síncrona até o bloqueio expirar e então executar a requisição normalmente.

Ativar globalmente via config ou .env:

Ativar por chamada com waitOnRateLimit():

Desativar pontualmente (quando estiver ligado globalmente):

Atenção: O processo ficará bloqueado (via sleep) pelo tempo exato restante do bloqueio. Não use em requests web síncronos com bloqueios longos. Ideal para jobs/queues ou cenários onde o default_block_time é pequeno.

Gerenciamento Manual

Circuit Breaker

O circuit breaker é um padrão de resiliência que abre o circuito após N falhas consecutivas de um domínio, bloqueando requisições imediatamente (sem nem tentar a conexão) durante um período de recuperação. Diferente do rate limiting (que reage a 429), o circuit breaker é genérico e protege contra qualquer tipo de falha (5xx, timeouts, erros de conexão).

Estados

Estado Comportamento
CLOSED Operação normal. Falhas são contadas.
OPEN Circuito aberto. Lança CircuitBreakerException imediatamente.
HALF-OPEN Após o recovery_time, permite uma requisição de sondagem. Se sucesso → CLOSED. Se falha → OPEN.

Habilitando Globalmente

Via config ou .env:

Exemplo: configurando tempos (circuit breaker)

O HTTP_SERVICE_CIRCUIT_BREAKER_RECOVERY_TIME é expresso em segundos. Exemplo: aumentar para 120 segundos (2 minutos):

Observação: diferentemente do rate limit, que usa minutos para o bloqueio padrão (default_block_time), o circuit breaker usa segundos para recovery_time.

Habilitando por Chamada

Tratamento de Exceções

Wait on Circuit Breaker

Por padrão, quando o circuito está OPEN o serviço lança CircuitBreakerException imediatamente. Com waitOnCircuitBreaker() o comportamento muda: o serviço aguarda (sleep) até o tempo de recuperação expirar e então tenta a requisição novamente em estado HALF-OPEN — idêntico ao waitOnRateLimit() para o rate limiting.

Atenção: não use em processos web síncronos com recovery_time longo. Ideal para jobs/queues ou quando o circuit_breaker_recovery_time for baixo.

Ativando globalmente via config ou .env:

O método throwOnCircuitBreaker() permite sobrescrever o comportamento global em chamadas específicas.

Diferença entre Circuit Breaker e Rate Limiting

Rate Limiting Circuit Breaker
Aberto por Resposta 429 (Too Many Requests) N falhas consecutivas (5xx, timeout, etc.)
Protege contra Exceder cota da API Serviço degradado/fora do ar
Tempo de bloqueio Respeitando Retry-After do servidor Configurável (recovery_time)
Persistência Banco de dados Cache do Laravel
Sondagem automática Não Sim (HALF-OPEN)

Namespace Compartilhado entre Projetos

Por padrão, o estado do circuit breaker é isolado por aplicação — cada projeto mantém sua própria contagem de falhas. Isso é o comportamento correto na maioria dos casos.

Se dois ou mais projetos usam o mesmo driver de cache (ex: mesmo Redis) e precisam compartilhar o estado — para que o App B saiba que o App A já detectou que um domínio está fora do ar — configure o mesmo namespace nos dois:

Com isso, as chaves de cache ficam no formato http_cb_produtivo_<md5(domain)> e são compartilhadas entre os projetos.

Se HTTP_SERVICE_CB_NAMESPACE não for definido (padrão), cada app tem seu estado independente com chaves http_cb_<md5(domain)>.

Atenção: ao compartilhar namespace, um único projeto sofrendo falhas de rede ou erros locais pode abrir o circuito para todos os outros. Use com cuidado em ambientes heterogêneos.

Consultar Logs

Models e Query Scopes

Estrutura do Log

Cada log contém:

Estrutura do Controle de Rate Limit

Cada registro de bloqueio contém:

Comandos Artisan

Instalação

Gerenciamento de Bloqueios

Limpeza de Logs

Configuração

Arquivo config/http-service.php:

Variáveis de Ambiente (.env)

Tabelas Customizáveis

Por padrão o pacote usa http_request_logs e rate_limit_controls. Para usar nomes diferentes sem alterar as migrations:

Os models HttpRequestLog e RateLimitControl aplicam o nome configurado via setTable() no construtor.

Conexões de Banco Separadas

Para isolar logs e rate limiting da conexão principal (útil para garantir persistência mesmo com rollback de transação):

Se HTTP_SERVICE_RATELIMIT_CONNECTION não estiver definido, o pacote usa HTTP_SERVICE_LOGGING_CONNECTION como fallback. Se nenhum estiver definido, usa a conexão padrão do Laravel.

Exemplos de Uso

Em Controllers

Em Jobs/Queue

Com Retry Logic

Manutenção e Performance

Limpeza Automática

Configure tarefas agendadas no app/Console/Kernel.php:

Índices de Banco de Dados

As migrations já incluem índices otimizados para:

Requisitos

Estrutura do Pacote

Documentação Adicional

Contribuindo

Contribuições são bem-vindas! Por favor, abra uma issue ou pull request.

Licença

MIT License - veja LICENSE para detalhes.

Suporte

Para dúvidas ou problemas:

Créditos

Desenvolvido por Allyson P. da Mata


All versions of laravel-http-service with dependencies

PHP Build Version
Package Version
Requires php Version ^8.3|^8.4|^8.5
illuminate/support Version ^12.0|^13.0
illuminate/http Version ^12.0|^13.0
illuminate/database Version ^12.0|^13.0
illuminate/console Version ^12.0|^13.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package allyson/laravel-http-service contains the following files

Loading the files please wait ...