Os termos REST e RESTful são constantes nas comunidades de desenvolvimento, independente de linguagem/framework. Pra quem ainda não sabe ou nunca teve interesse em saber o que significam esses dois termos, ai vai uma pequena descrição baseada em conteúdo facilmente encontrado na web.

Pegando um gancho do professor Jackson Pires, ai vai um trecho nesse post sobre API, REST e RESTful.

O que é API?

"O acrônimo API que provém do inglês Application Programming Interface (Em português, significa Interface de Programação de Aplicações), trata-se de um conjunto de rotinas e padrões estabelecidos e documentados por uma aplicação A, para que outras aplicações consigam utilizar as funcionalidades desta aplicação A, sem precisar conhecer detalhes da implementação do software.

Desta forma, entendemos que as APIs permitem uma interoperabilidade entre aplicações. Em outras palavras, a comunicação entre aplicações e entre os usuários."

O que é REST?

" REST significa Representational State Transfer. Em português, Transferência de Estado Representacional. Trata-se de uma abstração da arquitetura da Web. Resumidamente, o REST consiste em princípios/regras/constraints que, quando seguidas, permitem a criação de um projeto com interfaces bem definidas. Desta forma, permitindo, por exemplo, que aplicações se comuniquem. "

E RESTful?

É basicamente a "capacidade de determinado sistema aplicar os princípios de REST."

Ruby on Rails API

Sabendo disso, podemos então partir para a construção de nossa API. Desde a versão 5 o Rails oferece a opção de criação de APIs REST por padrão, utilizando a flag --api na criação de novos projetos.

Especificações

Para esse post estou utilizando as seguintes versões de Ruby e Rails.

  • Ruby version: 2.6.1
  • Rails version: 5.2.3

Criando a api

Para criar um projeto Rails no padrão RESTful API, execute o seguinte comando no terminal:

rails new restfulapi --api

Logo após a criação, acesse o diretório do projeto, como padrão em projetos Rails, vamos instalar as dependências e criar o banco de dados, então podemos executar o servidor web.

cd restfulapi
bundle install
rails db:create
rails s

Ao acessar o localhost:3000 você deve ver algo do tipo.

Drag Racing

Agora podemos começar a criar o primeiro resource do nosso app, nesse caso Post será nosso primeiro model:

rails g scaffold Post title:string body:text
rails db:migrate

Registre alguns posts no console do Rails:

rails c
> Post.create!(title: "Post 1", body: "Post body of this app")
> Post.create!(title: "Post 2", body: "Post body of this app")
> Post.create!(title: "Post 3", body: "Post body of this app")
> Post.create!(title: "Post 4", body: "Post body of this app")

Executando o servidor mais uma vez:

rails server

E acessando no browser localhost:3000/posts esse deve ser o resultado exibido:

Drag Racing

Conforme podemos analisar no app/controllers/posts_controller.rb todos os métodos [new, create, edit, update, delete] além do index que acabamos de acessar também estão disponíveis.

Com pouco esforço temos uma api com um resource Post sendo executado de forma simples. No próximos posts falaremos mais sobre Nested JSONs, Json Web Tokens e outros conteúdos relacionados a Apis com Rails.