Com este projeto tenho por objetivo me aperfeiçoar como desenvolvedor.
Dado um arquivo noticias.json tenho por objetivo fazer com que minha API Laravel recebe este conjunto de notícias e os salve diretamente no Banco de Dados PostgreSQL. De forma síncrona, por enquanto, que ele seja salvo no Elasticsearch para consulta posterior. Ao abrir o FrontEnd escrito em Vuejs, juntamente com o Quasar Framework, que ele faça uma requisição à API do Laravel e que este por sua vez, não consulte o Banco de Dados do Postgre e sim os diretamente os documentos salvos no Elasticsearch, exindo na tela em formato de lista e detalhes.
Atualmente estou com esta arquitetura:
E o objetivo é fazer com que os serviços se comuniquem através do RabbitMQ:
Caso deseje configurar e testar siga os passos abaixo:
Na sua máquina, instale:
- Docker
- Node
- Yarn
-
[No linux] Após o clonar o projeto, criar o diretório .docker e conceder permissão de escrita
mkdir .docker sudo chmod -R 777 .docker/
-
Acesse o diretório quasar. No terminal utilize o comando:
yarn
-
No diretório principal do projeto
docker-compose up -d --build
-
Tendo subido os containers do Docker, acesse o projeto da API através do container.
docker exec -it app bash
-
Cria o arquivo de configuração de ambiente com base no exemplo
cp .env.example .env
-
Instala as dependências do framework
composer install
-
Cria uma key única para a API do Laravel
php artisan key:generate
-
Cria todas as tabelas no Banco de Dados do Postgree
php artisan migrate
-
Atualizar permissões de diretório
chmod -R 777 storage/ chmod -R 777 bootstrap/cache/
-
[Opcional] Caso deseje visualizar a documentação da API.
php artisan scribe:generate
-
Você importar para Postman ou Insomnia, gerando automaticamente todas as requisições de cada rota da API. Fique atento(a) para a variável de ambiente apontando para a localhost. Precisa configurar para localhost:8080
.\api\public\docs\collection.json
-
Visualizar Documentação da API em uma página da web
.\api\public\docs\index.html
-
Serviço | Porta |
---|---|
Laravel | http://localhost:8100/ |
Laravel API | http://localhost:8100/api |
Elasticsearch | http://localhost:9200/ |
Quasar (Front) | http://localhost:8080/ |
-
Para salvar a lista de noticias envie o arquivo para a rota abaixo com o verbo POST:
POST http://localhost:8100/api/noticias/lote
É possível enviar um arquivo selecionado a opção File
-
Em seguida é possível visualizar o resultado abrindo em seu navegador:
http://localhost:8080/
- No terminal, no diretório principal do projeto
docker-compose down -f