Origem e significado de REST e RESTful

O mercado define REST como serviços HTTP que fornecem recursos, geralmente em JSON, através dos verbos GET, PUT, POST e DELETE. Embora, esses serviços possam ser REST, o conceito vai além.

Nosso sentimento é que, por desconhecer as ideias que nortearam o surgimento do conceito, implementadores de REST acabam perdendo boas oportunidades de constuir arquiteturas mais robustas. Essa é a motivação dessa série.

Origem e significado de REST

REST (REpresentational State Transfer) é um estilo arquitetural proposto por Roy Thomas Fielding, em 2000, em sua dissertação de PhD (Architectural Styles and the Design of Network-based Software Architectures). Se você implementa serviços RESTful, deveria ler o trabalho de Fielding.

O primeiro capítulo do trabalho de Fielding é, inclusive, uma excelente referência para definições relacionadas a Arquitetura de Software.

REST é um estilo arquitetural para aplicações baseadas em rede.

Ele menciona e aceita a diferenciação proposta por Tanenbaum, que aponta que sistemas distribuídos são geralmente percebidos por seus usuários como unidade, mesmo rodando em múltiplas CPUs. Ainda seguindo Tanenbaum, sistemas baseados em rede operam através de uma rede e isso fica transparente para seus usuários.

REST foi concebido sob cinco grandes ideiais (constraints) fundamentais:

  1. Cliente-Servidor: a comunicação ocorre entre dois agentes, em rede, onde um agente é considerado cliente e outro é considerado servidor. O cliente, ativamente, faz requisições que devem ser respondidas pelo servidor.
  2. Cache: tanto o agente servidor quanto cliente podem implementar estratégias de caching com vistas a melhoria da performance de rede e a percebida pelo usuário.
  3. Stateless: o agente servidor não deverá manter nenhum tipo de estado entre duas ou mais requisições. Uma única requisição deve conter todos os parâmetros necessários para ser atendida sem ter de contar com nenhum tipo de “memória” do agente servidor.
  4. Layered: A comunicação entre cliente e servidor deve ocorrer através de camadas (arquitetura pipe-and-filter). Onde camadas podem ser adicionadas para melhorar a performance do sistema (por exemplo, implementando caching)
  5. Interface Uniforme: a troca de mensagens entre cliente e servidor deve ocorrer através de interfaces uniformes, ou assemelhadas, tanto em modo quanto em formato.

Há ainda uma sexta ideia (constraint) que é “código sob demanda”. Ou seja, a capacidade do servidor “fornecer” código para ser executado no cliente. Esse conceito é tido como opcional.

O que REST, necessariamente, não é

Fielding não indica que a implementação de REST deva se restringir a algum protocolo. Logo, não precisa ser HTTP. Ele também não especifica um formato. Logo, não precisamos adotar obrigatoriamente XML ou JSON.

Na prática, [tweet]na maioria das vezes que ouvimos as pessoas falarem em “API REST”, na verdade querem dizer “API HTTP com dados em JSON”. Por incrível que pareça, nem sempre RESTful.[/tweet]

RESTful?

Uma API implementada conforme as indicações do trabalho de Fielding, implementando os cinco princípios fundamentais, é dita “RESTful”.  Entretanto, é importante salientar que é plenamente possível (e frequente, infelizmente) que APIs RESTful não sejam boas APIs.

Concluindo

REST é um padrão arquitetural, formalmente definido, que requer que princípios sejam rigidamente observados.

Nem toda API HTTP que retorne recursos formatados como JSON ou XML é, necessariamente, RESTful. Aliás, APIs RESTful podem ser implementadas sem usar HTTP, nem JSON ou XML.

Em posts futuros, vamos analisar mais as recomendações de Fielding e verificar como elas podem nos ajudar a criar APIs mais sólidas (RESTful ou não).

NOTA: Recomendamos assistir essa breve entrevista de Fielding sobre REST.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
4 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Gabriel
Gabriel
5 anos atrás

Elemar, poderia descorrer em outro texto um pouco sobre quando usar 204 (no content) e 404 (not found)?

Vitor Almeida
Vitor Almeida
5 meses atrás
Reply to  Gabriel

vc usa o 204 quando vc deleta um registro pq nesse caso não faz sentido retornar alguma coisa e 404 vc usa quando n trem a rota ou quando vc pesquisa id não existente

Tiago Tartari
Tiago Tartari
5 anos atrás

Caro Gabriel, tudo bem?

Você pode utilizar esse site também para algo muito mais detalhado sobre StatusCode.

https://restfulapi.net/http-status-codes/

Abraços

Raphael Nara Pereira
Raphael Nara Pereira
1 ano atrás

Elemar, se uma API REST valida uma requisição mediante token de acesso validando dados em um servidor SSO, podemos dizer que ela violou o princípio de ser stateless segundo o trabalho do Fielding?

AUTOR

Elemar Júnior
Fundador e CEO da EximiaCo atua como tech trusted advisor ajudando empresas e profissionais a gerar mais resultados através da tecnologia.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Arquivo

Pós-pandemia, trabalho remoto e a retenção dos profissionais de TI

CTO Consulting e Especialista em Execução em TI
4
0
Queremos saber a sua opinião, deixe seu comentáriox

A sua inscrição foi realizada com sucesso!

O link de acesso à live foi enviado para o seu e-mail. Nos vemos no dia da live.

Muito obrigado!

Deu tudo certo com seu envio!
Logo entraremos em contato

Origem e significado de REST e RESTful

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Origem e significado de REST e RESTful

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?