DEV Community

Cover image for REST API
Octávio Demos
Octávio Demos

Posted on

REST API

1 INTRODUÇÃO

Nas últimas décadas, ocorreu o aumento da complexidade dos sistemas de software, com o aumento da demanda por aplicações distribuídas e escaláveis.
Nesse contexto, consolidaram-se as APIs REST, como um paradigma para comunicação e integração entre sistemas como um modelo flexível e aderente.
Diante disso, este artigo tem como objetivo a análise da arquitetura de software REST.

2 O que é REST?

O Representational State Transfer (REST) é um estilo arquitetural de software, proposto por Roy Fielding em sua tese de doutorado no ano 2000, que possibilita a comunicação consistente e escalável entre diferentes aplicações web. Sua principal característica é a definição de restrições arquiteturais que, quando aplicadas corretamente, favorecem a simplicidade, a escalabilidade e a independência entre cliente e servidor (FIELDING, 2000).

Ao contrário de outros modelos mais rígidos, como o SOAP (Simple Object Access Protocol), o REST adota princípios mais leves, apoiando-se em padrões já estabelecidos na web, como o protocolo HTTP e os identificadores de recursos (URIs). Isso torna sua implementação mais intuitiva e de fácil adoção por desenvolvedores, além de facilitar integrações em ambientes heterogêneos (RICHARDSON; RUBY, 2008).

3 O que é API?

A Application Programming Interface (API) atua como um intermediador entre sistemas, permitindo que estes se comuniquem e troquem dados de maneira estruturada e padronizada. Por meio de APIs, desenvolvedores conseguem acessar funcionalidades ou recursos de uma aplicação sem a necessidade de conhecer sua implementação interna, o que promove maior reutilização de código e integração entre diferentes softwares (HOSSAIN; ZHAO; LEE, 2019).

Em termos práticos, pode-se considerar a API como um “contrato” entre sistemas, especificando os métodos, formatos de dados e regras de comunicação que devem ser seguidos para garantir a interoperabilidade.

4 API REST

Dessa forma, uma API REST é a aplicação prática da arquitetura REST, sendo executada por meio de solicitações de dados por método HTTP (HyperText Transfer Protocol), no qual seus resultados podem ser retornados por formato JSON, html, XML, ou txt, trazendo destaque para a simplicidade à ampla compatibilidade com as linguagens de programação.

5 PILARES DO REST: PRINCÍPIOS E VANTAGENS DA ARQUITETURA

A arquitetura REST é guiada por um conjunto de princípios que orientam seu funcionamento, como a separação entre cliente e servidor, a ausência de estado na comunicação (stateless), a utilização uniforme de interfaces e a representação de recursos por meio de URIs. Esses princípios, quando aplicados em conjunto, favorecem a simplicidade e a clareza no desenvolvimento de sistemas distribuídos (FIELDING, 2000).

5.1 CLIENTE-SERVIDOR

O princípio cliente-servidor é um dos fundamentos da arquitetura REST e estabelece a separação entre quem consome e quem fornece os recursos. Nesse modelo, o cliente é responsável por realizar solicitações, enquanto o servidor é responsável por processá-las e retornar as respostas adequadas. Essa divisão de responsabilidades favorece a independência entre as partes, permitindo que cada uma possa evoluir de forma isolada sem comprometer o funcionamento do sistema (FIELDING, 2000).

5.2 Métodos Http

Um dos componentes centrais da interface é o uso correto dos métodos ou também verbos do protocolo HTTP, que definem a ação a ser executada sobre um recurso. Os métodos mais comuns são os detalhados abaixo: (FIELDING, 2000; RICHARDSON; RUBY, 2008).

  • GET - Leitura (Read) - Solicita algo para o servidor
  • POST - Criação (Create) - Envia dados para o servidor
  • PUT - Atualização/Substituição (Update) - Atualiza um recurso existente
  • DELETE - Exclusão (Delete) - Remove um recurso específico.

5.3 Stateless

Outro princípio essencial da arquitetura REST é o 'stateless', a ausência de estado. De modo que, cada solicitação feita pelo cliente ao servidor deve conter todas as informações necessárias para que o servidor a compreenda e processe. O servidor não armazena nenhum contexto ou estado da sessão do cliente entre uma requisição e outra. Dessa forma, o cliente tem que passar as informações através de 'tokens', credenciais ou outro tipo de dado para contexto.
A principal vantagem dessa abordagem é a escalabilidade, uma vez que o servidor não precisa manter o controle de sessões ativas, qualquer requisição pode ser atendida por qualquer servidor disponível, facilitando o balanceamento de carga e aumentando a resiliência do sistema (FIELDING, 2000).

5.4 Cacheability

A fim de melhorar a performance e reduzir a carga no servidor, as respostas de uma API REST devem, sempre que possível, ser marcadas como possíveis de realizar 'cash' ou não. Quando uma resposta é possível de 'cash', o cliente pode reutilizar essa resposta em requisições futuras, evitando a necessidade de consultar o servidor novamente, assim economizando o uso de memória. Esse princípio é fundamental para aplicações de grande escala, pois diminui a latência e o tráfego de rede (FIELDING, 2000).

6 Conclusão

Portanto, a arquitetura REST consolidou-se como um padrão dominante no desenvolvimento de sistemas distribuídos, não por acaso, visto que seus princípios como a separação cliente-servidor, a comunicação 'stateless', uma interface uniforme e a capacidade de cache fornecem um modelo robusto, escalável e flexível para a comunicação entre aplicações. Ao aproveitar padrões já existentes e amplamente adotados na web, como o protocolo HTTP, o REST simplificou o processo de integração, tornando-se uma peça indispensável de inúmeras tecnologias modernas.

7 Referências

FIELDING, Roy Thomas. Architectural Styles and the Design of Network-based Software Architectures. 2000. 180 f. Tese (Doutorado em Filosofia em Ciências da Informação e da Computação) – University of California, Irvine, 2000.
RICHARDSON, Leonard; RUBY, Sam. RESTful Web Services. Sebastopol: O’Reilly Media, 2008.
HOSSAIN, Md. Shahadat; ZHAO, Liang; LEE, Sang Soo. A Framework for Evaluating Commercial Cloud API Usability. IEEE Access, v. 7, p. 10394–10412, 2019.

Top comments (0)