Imagens de veículos no Laravel, resolvidas com o cliente HTTP, cacheadas com a fachada Cache, renderizadas em um componente Blade.

O Laravel já possui os três componentes necessários: um cliente HTTP, um cache e uma fila. Resolva o veículo em uma classe de serviço, lembre-se do URL e renderize através de um componente Blade que o resto da aplicação nunca precisa considerar.

LP laravel: hero1
LP laravel: hero2
LP laravel: s1

Uma classe de serviço, com cache por padrão

Envolva a consulta em um pequeno serviço, coloque Cache::remember ao redor e vincule-o no contêiner. A partir desse ponto, o restante do código base chama um método e recebe uma URL, sem saber que uma API foi envolvida.

  • Configuração e chave ficam em config e .env
  • Cache::remember torna a chamada da API rara
  • Fácil de falsificar em testes com Http::fake

A integração, edição Laravel

Um serviço, uma chamada de cache, um componente Blade e um trabalho em fila para lotes. Todos os quatro são a versão sem graça

01
Adicionar configuração e chave

Um arquivo de configuração com a chave do .env, para que nada sensível alcance o controle de versão

02
Escreva o serviço

O cliente HTTP chama a API com um VIN ou uma especificação, e o método retorna as URLs que suas visualizações precisam.

03
Armazenar o resultado em cache

Cache::remember com uma chave construída a partir do identificador do veículo. Listagens, então, renderizam inteiramente a partir do cache

04
Coloque o trabalho em massa na fila

Para uma passagem completa do catálogo, envie um trabalho por veículo para que a importação ocorra em segundo plano e possa ser retentada

LP laravel: s2

Componentes Blade mantêm fora das visualizações

Um único componente x-vehicle-image recebe o veículo e a largura, e todas as visualizações na aplicação o utilizam. Quando o ângulo ou o formato mudam depois, você edita um arquivo

  • Um componente para listas, páginas de detalhes e PDFs
  • Largura como uma propriedade, para que cada visualização solicite o que renderiza
  • Variantes transparentes para layouts temáticos

Imagens de veículos no Laravel, na prática

Aplicações Laravel geralmente chegam à imagem de veículos através de um script de importação. Alguém escreve um comando que baixa fotos para o armazenamento, e a partir daí a aplicação carrega um sistema de arquivos cheio de fotos de veículos, uma fila que mantém tudo atualizado e um relatório de bugs toda vez que um ano do modelo está faltando.

Resolver sob demanda elimina completamente a camada de armazenamento. O identificador do veículo que você já tem se torna a imagem, o cache torna isso barato e um componente Blade o torna invisível. O que antes era um pipeline de importação com seus próprios modos de falha se torna uma chamada de método que retorna uma string.

O que as equipes Laravel perguntam

Existe um pacote Laravel?

Não é um dedicado. A API é um endpoint REST simples, e o cliente HTTP mais uma classe de serviço geralmente é menos código do que configurar um pacote seria.

Como devo armazenar em cache a consulta?

Cache::remember com uma chave construída a partir do VIN ou da especificação. Um TTL longo é bom, pois a resposta só muda quando seu catálogo muda

Devo armazenar imagens no sistema de arquivos?

Não há necessidade. Os URLs apontam para o nosso CDN, então armazenamento, backups e uso de disco permanecem onde estão.

Como testar o código que chama a API?

Http::fake no seu caso de teste. Como o serviço retorna URLs, a maioria dos testes só precisa afirmar a forma do que retorna

E uma importação completa do catálogo?

Enviar um trabalho em fila por veículo. Trabalhos falhados tentam novamente por conta própria e a importação fica fora do ciclo de solicitação

Funciona com Livewire ou Inertia?

Sim. Ambos recebem a URL do servidor como uma string comum, então nada muda na integração.

Experimente em um ramo local

Informe como os veículos são armazenados no seu esquema e onde as imagens são renderizadas. Retornamos com URLs e um esboço de serviço.

  • Variantes dimensionadas para suas visualizações de lista e detalhes
  • Um padrão de cache adaptado ao seu tráfego
  • O teste cobre um ramo completo de integração
Obrigado. Recebemos sua mensagem e retornaremos com URLs de imagens para sua configuração.
Algo deu errado. Tente de novo ou escreva para info@vehicleimagery.com.

Coloque em uma classe de serviço

Envie-nos alguns VINs ou especificações do seu banco de dados e as larguras que suas visualizações renderizam. Você recebe URLs para testar hoje.

Normalmente no mesmo dia útil