Robô Crawler que extrai informações de um motor de reservas.
Este aplicativo apresenta todas as mais recentes ferramentas e práticas em desenvolvimento web!
- 💹 Node.js — Ambiente de execução Javascript server-side.
- 📉 Express — É um framework para criação de API's REST utilizando Node.js
- 📶 Puppeteer — API de alto nível para controlar o Chrome ou o Chromium sobre o DevTools.
- ⭕ Yup — Biblioteca para validar schemas.
- 🌐 Sucrase — Uma alternativa ao Babel que permite um desenvolvimento muito rápido.
- ✔ Prettier — Utilizado para manter um código fonte mais bonito.
- 🧲 Nodemon — Reinicia o servidor quando detecta alterações em ambiente de desenvolvimento.
- 🔷 Eslint — Ferramenta de análise de código estática para identificar padrões problemáticos encontrados no código.
1 - Entre no caminho do projeto via powershell ou cmd utilizando cd crawler-robot
2 - Execute o comando yarn após entrar no diretório para instalar as dependências.
3 - Após instalar as dependências, execute o comando yarn dev para iniciar o servidor.
4 - É necessário uma ferramenta para fazer requisições à API REST como Insomnia ou Postman
5 - Url base para execução da api é: http://localhost:3333
Descrição: Ao informar a data de checkin e a data de checkout o robô irá extrair os dados do motor de reservas e retornar uma resposta com as opções encontradas.
Rota POST: http://localhost:3333/buscar
Body:
{ "checkin": "15/03/2020", "checkout": "18/03/2020" }
Resposta:
[ { "price": "Preço do apartamento", "name": "Nome da hospedagem", "description": "Descrição do quarto", "images": [ "Imagens do quarto", ] }, { "price": "Preço do apartamento", "name": "Nome da hospedagem", "description": "Descrição do quarto", "images": [ "Imagens do quarto", ] }, ]
Caso não encontrado nenhuma hospedagem relacionada as datas passadas no corpo da requisição, essa é a resposta:
{ "error": "Desculpe-nos. Não existem apartamentos disponíveis para a pesquisa realizada." }
Os campos checkin e checkout são obrigatórios na requisição, o Yup é responsável por validar o SCHEMA. Suponhamos que não foi passado o campo checkout, a resposta será essa:
{ "error": "Validation fails", "messages": [ { "name": "ValidationError", "path": "checkout", "type": "required", "errors": [ "checkout is a required field" ], "inner": [], "message": "checkout is a required field", "params": { "path": "checkout" } } ] }
Licença MIT - consulte a página LICENÇA para obter detalhes.