Introdução REST

Hugo Costa
Training Center
Published in
4 min readJan 8, 2019
Photo by Drew Coffman on Unsplash

Ao contrário de que muitos pensam, REST não tem nada haver com descansar (rest em inglês ). REST são siglas para Representational State Transfer ou em português Transferência de Estado Representacional.

Mas afinal, o que é REST ?

REST não é uma arquitetura, biblioteca ou framework, é simplesmente um modelo que é utilizado para projetar arquitetura de softwares distribuídos que fazem comunicação de dados pela rede, seja local ou a famosa Internet.

Esse modelo foi criado por Roy Fielding um dos principais responsáveis e criadores do protocolo HTTP, basicamente, tudo que está online utiliza o protocolo HTTP ou o HTTPS que é a evolução do mesmo.

Quando o modelo se popularizou, desenvolvedores começaram a utiliza-lo para criar Serviços para fazer integrações com aplicações de diversos segmentos, nessa época o modelo para fazer essas integrações mais popular era o SOAP (irá ser abordado em outro post), o SOAP ainda é muito utilizado, principalmente no Brasil pelos órgãos governamentais, infelizmente.

Separação de responsabilidades

No REST a implementação do cliente (front-end) e do servidor (back-end) são feitas separadamente sem nenhuma interferência de um ou outro. Isso significa que os dois podem ser desenvolvidos e refatorados separadamente. Mas uma hora ou outra o cliente irá precisar se comunicar com a aplicação REST para poder usufruir dos dados que a mesma disponibiliza para consumo.

Aplicações em REST seguem um paradigma que é chamado de STATELESSNESS, ou seja, não possui estado, portanto o servidor não precisa saber em qual estado o cliente (front-end) está e vice-versa, cada nova comunicação é tratada de forma independente e os estados anteriores não interferem no resultado de uma futura requisição.

Comunicação entre Front-end e Back-end

No modelo REST, o front-end manda requisições para receber ou modificar dados, e o back-end envia respostas para cada requisição, seja ela uma resposta de sucesso, erro, os dados em si e etc…

Fazendo requisições

O REST precisa que o front-end faça uma requisição para o back-end para enviar ou modificar dados no servidor, onde o back-end fica. Um requisição consiste em:

  • um verbo ou método HTTP, que define que tipo de operação o back-end vai realizar
  • um header, ou seja, cabeçalho da requisição que passa informações sobre a requisição
  • um path (caminho ou rota) para o back-end, como por exemplo http://minhaapi.show.br/meucaminho
  • informação no body, ou seja, no corpo da requisição, sendo essa informação opcional

Métodos HTTP

Existem 4 métodos básicos que podem ser usados para interagir com uma aplicação REST, os métodos são:

  • GET que retorna os dados por algum identificador ou uma coleção de dados
  • POST que cria um novo dado, em uma coleção já existente ou não
  • PUT que edita e atualiza certo dado ou coleção de dados
  • DELETE que como o próprio nome já diz, deleta certo dado ou coleção

Quais tipos de informações uma requisição pode retornar?

Uma requisição pode nos retornar vários tipos de formato de dados, como texto, vídeo, arquivo, musicas e muitas outras. Nós especificamos o formato que queremos receber pelo headers e Accept, alguns exemplos de headers e Accept que podemos passar são:

  • imageimage/png, image/jpeg, image/gif
  • audioaudio/wav, image/mpeg
  • videovideo/mp4, video/ogg
  • applicationapplication/json, application/pdf, application/xml, application/octet-stream

Onde ficam essas informações ?

Essas informações precisam ser acessadas por um path (caminho) específico para cada tipo de informação que o desenvolvedor especificou anteriormente na hora de modelar sua aplicação REST, por exemplo:

No path http://minhaapi.show.br/usuarios contém as informações dos usuários, em http://minhaapi.show.br/usuarios/12 estamos acessando o usuário com o id 12 para obtermos mais informações sobre ele ou filtrar o usuário e assim por diante, cada requisição pode ter uma rota e parâmetros específicos para acessar os dados que o front-end envia as requisições.

Códigos de Respostas

Para cada resposta que a aplicação REST retornar, ela irá ser enviada com um código para ser definido o status da requisição, existem muitos, mas os principais são:

  • 200 (OK), código de sucesso da requisição
  • 201 (CREATED), código de sucesso na criação de um objeto
  • 204 (NO CONTENT), código de sucesso ao deletar certo objeto/informação
  • 400 (BAD REQUEST), ocorreu algum erro na requisição, pode ter sido um erro de várias naturezas
  • 404 (NOT FOUND), informação, rota ou coleção não encontrada
  • 500 (INTERNAL SERVER ERROR), provavelmente ocorreu algum erro no lado do servidor, como é um erro no servidor as informações sobre o erro em si é limitado, por conta que é impossível explorar esse erro

Para cada método HTTP é esperado os seguintes códigos de sucesso:

  • GET, retorna 200 (OK)
  • POST, retorna 201 (CREATED)
  • PUT, retorna 200 (OK)
  • DELETE, retorna 204 (NO CONTENT) Se a requisição falhar ao deletar, o código será específico ao problema encontrado

Como fazer uma aplicação REST

Existem diversas formas e tecnologias para criar uma aplicação REST, porém a mais famosa é com Node.js e o retorno mais convencional de uma API/Aplicação REST é em json ( JavaScript Object Notation), pois é muito leve e de fácil manipulação.

Finalizando

Esse foi um post para introduzir o modelo REST, conceitos básicos e principais ideias por trás desse modelo, para conhecer mais sobre ele segue abaixo alguns recursos sobre o assunto:

Feedbacks são bem-vindos, obrigado pela leitura!

--

--

Hugo Costa
Training Center

Sr Front-end Engineer @ Rocket.Chat. Apaixonado por compartilhar conhecimento, inovação e produtividade! https://linktr.ee/hugocostadev