Origem e significado de REST e RESTful

Elemar Júnior

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, 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.

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
2 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Gabriel
Gabriel
3 anos atrás

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

Tiago Tartari
Tiago Tartari
3 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

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:

Engenharia de Software

O seu time de engenharia atua de forma colaborativa para atender os objetivos do negócio?

Arquiteto de Software com experiência executiva em Tecnologia
Infraestrutura e Nuvem

As principais operações da sua empresa já estão rodando na nuvem?

Engenheiro de nuvem, arquiteto de software e especialista em Containers e Devops
Governança e Transformação Digital

A importância da governança de TI na transformação digital

Consultor em gestão de negócios, governança e compras estratégicas

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

2
0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

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?