Cursos / Informática para Internet / Plataformas de aplicações Web / Aula
Vamos rapidamente mostrar os comandos para se criar um banco de dados chamado loja_de_animais no MariaDB (com o conector do MySQL) com uma tabela chamada animais. Em seguida vamos criar uma aplicação sinatra com uma API para criar animais e listar os animais criados.
Criando o banco de dados e tabela (Requer o MariaDB ou MySQL instalado)
Os comandos realizados acima, são detalhados abaixo. No primeiro, conecta-se ao banco de dados pelo terminal:
# mysql -uroot -p
Enter password: Sua senha aqui
O comando create database loja_de_animais;
cria uma base de dados no MariaDB ou MySQL
MariaDB [(none)]> create database loja_de_animais;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> use loja_de_animais;
informa que você deseja usar o banco loja_de_animais.
create table animais(id integer primary key auto_increment, nome varchar(255), tipo varchar(255), raca varchar(255), descricao TEXT);
cria a tabela de animais no banco, com as colunas id, nome, tipo, raca e descricao.
Pronto, nosso banco está criado. Agora instalar três pacotes (gems) do Ruby para nossa aplicação: Sinatra (caso já não tenha feito), o ActiveRecord (ORM Ruby para acesso a banco de dados) e o mysql2 (driver do mysql/mariadb que o ActiveRecord vai utilizar). Vamos usar o comando gem install sinatra activerecord mysql2
para instalar todos os pacotes de uma vez. Veja o resultado:
# gem install sinatra activerecord mysql2
Successfully installed sinatra-2.1.0
Successfully installed activerecord-6.1.4
Building native extensions. This could take a while...
Successfully installed mysql2-0.5.3
3 gems installed
Já com o Sinatra, ActiveRecord e mysql2 instalado, vamos agora criar a API em um arquivo chamado animais.rb com rotas para criar (POST /animais) e listar animais (GET /animais) e remover um animal por id (DELETE /animal/:id)
Já com o Sinatra instalado em uma pasta, vamos criar um arquivo com o nome animais.rb
com toda a aplicação nele.
require 'sinatra'
require 'active_record'
set :port, 3000
# Estabelece conexão com banco de dados com suas credenciais.
# Só executa uma vez quando a aplicação inicia.
ActiveRecord::Base.establish_connection({
adapter: 'mysql2',
host: 'localhost',
username: 'USUARIO DO BANCO',
password: 'SENHA DO BANCO',
database: 'loja_de_animais'
})
# Essa classe é um Model do ORM ActiveRecord e
# está configurada para acessar a tabela 'animais'
# Com isso ela consegue manipular essa tabela completamente.
class Animal < ActiveRecord::Base
self.table_name = 'animais'
end
get '/animais' do
animais = Animal.all # Utilizando a classe Animal obtem todos os cadastrados no banco
return animais.to_json # retorn um JSON com todos os animais da base de dados
end
post '/animais' do
# recebe os dados JSON da requisição convertendo para um objeto Ruby
dados = JSON.parse(request.body.read)
animal = Animal.new # Cria uma instância da classe Animal
# setar o nome, tipo, raca e descricao para os passado no POST
animal.nome = dados['nome']
animal.tipo = dados['tipo']
animal.raca = dados['raca']
animal.descricao = dados['descricao']
# salva no banco de dados
animal.save()
return { message: 'Animal criado com sucesso!', animal: animal }.to_json # Retorna um JSON com os dados do animal salvo
end
# Remove um animal por ID
delete '/animal/:id' do
#Busca um animal com ID passado na rota como parâmetro do método find
animal = Animal.find(params['id'])
animal.destroy() #remove o animal da base de dados
return { message: "#{animal.nome} foi removido com sucesso" }.to_json
end
A API está criada. Vamos utilizar o Insomnia (pode ser baixado em https://insomnia.rest/) para a acessar e realizar várias operações:
Cadastrando Bruce Wayne (POST http://localhost:3000/animais)
Cadastrando Baleia (POST http://localhost:3000/animais)
Cadastrando Oriosvaldo (POST http://localhost:3000/animais)
Obtendo a lista de animais cadastrados: (GET http://localhost:3000/animais)
Removendo um animal por ID: DELETE http://localhost:3000/animal/4
Pronto. Criamos um API do início ao fim, desde o banco de dados, tabela, aplicação com o sinatra e consumimos os dados com o Insomnia realizando as operações de criar animal, listar e remover um animal por ID.
Como você viu utilizamos a biblioteca ActiveRecord dentro do Sinatra para acessar o banco de dados. O ActiveRecord é uma biblioteca originalmente criada para o framework RubyOnRails, mas como é modularizada ela pode ser utilizada fora do Rails, como fizemos aqui. Mas isso não é realmente necessário. Seria possível usar o driver do mysql diretamente no nosso código. Usamos o ActiveRecord somente para ter mais facilidades.
Versão 5.3 - Todos os Direitos reservados