API que faz um crawler da primeira pagina do site http://quotes.toscrape.com/, e realiza um cache com mongoDB.
Foi desenvolvida uma API em rails 5, utilizando a gem nokogiri para realizar o parser das informações vindas do site, para salvar as informações retornadas do site foi utilizado o mondoDB(gem mongoid), para a autenticação foi utilizado JWT(gem knock), na parte de busca principal foi utilizado services, com a finalidade de retirar a logica de busca e parser do controller.
Para os testes, foram utilizadas as gems rspec-rails e mongoid-rspec.
Toda vez que uma tag é pesquisada, verifica-se no banco se a tag pesquisada foi previamente salva, se não tiver sido, realiza-se o parser das informações do site, e salva os dados retornados no banco, caso a tag pesquisada estiver em banco, realiza-se uma busca interna das frases que contém a tag.
- Rails 5.x
- MongoDB 4.x
- Ruby 2.3.x - Instalação
- Rails 5.1.x - Instalação
- MongoDB 4.x - Instalação
- Docker - [Instalação] (https://docs.docker.com/engine/installation/)
- Docker Compose - [Instalação] (https://docs.docker.com/compose/)
- Dentro da pasta do projeto execute
docker-compose build
- Caso queira criar o usuario padrão para login(email:[email protected], password:abc123), execute o comando
docker-compose run website rails db:seed
- Para subir a aplicação utilize o comando
docker-compose up
- Dentro da pasta quotes-api instale as dependências com o comando:
bundle install
- Caso o mongoDB não esteja iniciado, inicie ele através do comando:
sudo service mongod start
- Caso queira gerar um usuário padrão para login(email:[email protected], password:abc123), execute o comando:
rails db:seed
- Por ultimo start o servidor, através do comando:
rails server
ourails s
não se esqueça de manter o terminal aberto.
- Execute o comando
docker-compose run website rspec
- Dentro da pasta do projeto, caso não tenha instalado as dependências, execute o comando
bundle install
, para instalar as dependências. - Execute o comando
rspec
dentro da pasta do projeto.
Recomenda-se usar o postman para teste da API.
- Caso não tenha dado o comando
rails db:seed
, ou caso queira cadastrar um novo usuário, acesse a url via POSTlocalhost:3000/user/register
, passando o objeto:
{
"auth":{
"email":"[email protected]",
"password":"123456"
}
}
- Para logar na API, e pegar o JWT, acesse a url via POST
localhost:3000/user_token
, passando os dados previamente cadastrados:
{
"auth":{
"email":"[email protected]",
"password":"123456"
}
}
A API, ira retornar um JWT nesse formato:
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1MzQzNzI0OTgsInN1YiI6eyIkb2lkIjoiNWI3MzU5MGFhNTZlMDQwZmIwM2JjODY1In19.YW6eylabPG5tfTxUOK2vjetu4poYB8WGaJHU-ucrmOw"
- Após logado, deve-se setar no header Authorization do postman, precedido da palavra Bearer, o seu jwt, ficando dessa forma:
- Agora, para fazer a pesquisa utilize a URL
localhost:3000/quotes/:tag
através do método GET, onde :tag é a tag que será pesquisada: