Construa uma REST API em Ruby (em 1 minuto) ⚡
Introdução
Ruby é conhecido por sua simplicidade, desenvolvimento rápido e confiabilidade. Com suas bibliotecas e frameworks poderosos, você pode conseguir muito com pouco. Hoje, exploraremos o Sinatra, um framework leve que permite que você crie APIs rapidamente. Isso o torna perfeito para criar uma Prova de Conceito (POC) ou pequenos aplicativos prontos para produção.
O que você vai precisar 📝
Ruby (versão mais recente recomendada)
Sinatra e dependências (rackup e puma)
Postman para testes
Após instalar o Ruby, vamos instalar o Sinatra:
gem install sinatra rackup puma
Em seguida, pra verificar se o sinatra está funcionando, crie esse arquivo Ruby:
# myapp.rb
get do
end
E pra executar ele:
ruby myapp.rb
Visite: http://localhost:4567
(Você deve ver uma página com Hello World)
Construindo a API REST de livros
Vamos criar uma API com algumas operações básicas para gerenciar livros.
Por que apenas algumas operações em vez de todas? Fica até o final — sem spoiler 🤐
Estrutura do código
# In-memory storage for simplicity
books = []
content_type :json
status status
data.to_json
end
Aqui estamos definindo algumas coisas:
- Armazenamento na memória - Estamos usando um array para simplificar. Em produção, você deve usar um banco de dados real.
- Método json_response - Lida com o "parse" do JSON focando no content_type, status HTTP e os dados em si
Agora, vamos construir nosso primeiro ponto de endpoint!
POST /books
# Create a new book
post do
payload = JSON.parse(request.body.read, symbolize_names: true)
new_book = { id: books.size + 1, title: payload[:title], author: payload[:author] }
books << new_book
json_response(new_book, 201)
end
Observe que adicionamos o endpoint POST /books que significa "criar um novo livro" e podemos ir de linha em linha pra entender o que tá acontecendo:
- Transforma o payload JSON enviado pelo client em um objeto Ruby
- Constrói um novo objeto de livro e o adiciona ao
booksarray - É o mesmo que "inserir" um novo registro no banco de dados
- Envia o livro criado como uma resposta JSON com status 201
Tranquilo, né?!
Agora vamos construir outro endpoint que vai ajudar a ver os livros criados
GET /books
# List all books
get do
json_response(books)
end
Não há segredo nesse, já temos os dados que são um array de livros dentro da variável books
Isso seria o mesmo que realizar uma consulta para trazer todos os registros de um banco de dados.
Com esses dois pontos finais definidos, nosso código final fica assim:
# In-memory storage for simplicity
books = []
content_type :json
status status
data.to_json
end
# Create a new book
post do
payload = JSON.parse(request.body.read, symbolize_names: true)
new_book = { id: books.size + 1, title: payload[:title], author: payload[:author] }
books << new_book
json_response(new_book, 201)
end
# List all books
get do
json_response(books)
end
Testando
Para testes, usaremos o Postman, que é um client HTTP que nos ajuda a executar as operações em nossos endpoints
- Rodando o servidor
ruby myapp.rb
- Verificando os livros existentes
Aqui você vai executar um GET /books. Inicialmente, a resposta será um array vazio:

- Criando um novo livro
Envie uma request para POST /books com o body da imagem

Resposta:
- Verificando a criação
Execute outra requisição GET /books pra ver se o livro foi adicionado:

VOILÁ!!! 🧙 O livro tá ai
Conclusão
Você construiu uma API simples em 1 minuto! Mas pera, cadê os outros endpoints?
Desafio: Adicionar endpoints para operações de update, delete e show. Teste-os usando Postman ou outro cliente HTTP.
Se você tiver alguma dúvida, pergunta ou sugestão, pode entrar em contato comigo através das minhas redes sociais listadas na minha página inicial.
Obrigado por ler — happy coding! 👋😃