<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gabriel Tomé</title>
    <description>The latest articles on DEV Community by Gabriel Tomé (@gabrieltme).</description>
    <link>https://dev.to/gabrieltme</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3864650%2Ff3ecebc2-ca32-4886-b2f1-34196aa4b394.png</url>
      <title>DEV Community: Gabriel Tomé</title>
      <link>https://dev.to/gabrieltme</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gabrieltme"/>
    <language>en</language>
    <item>
      <title>Arquitetura REST</title>
      <dc:creator>Gabriel Tomé</dc:creator>
      <pubDate>Fri, 17 Apr 2026 22:13:49 +0000</pubDate>
      <link>https://dev.to/gabrieltme/arquitetura-rest-3d6</link>
      <guid>https://dev.to/gabrieltme/arquitetura-rest-3d6</guid>
      <description>&lt;p&gt;&lt;strong&gt;1 INTRODUÇÃO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No cenário atual do desenvolvimento de software, a integração entre sistemas heterogêneos deixou de ser uma exceção e virou regra. Com a popularização das aplicações em rede, os Web Services se tornaram a espinha dorsal dessa comunicação. Dentre as várias abordagens arquiteturais que estudamos no curso, o Representational State Transfer (REST) acabou se consolidando como o verdadeiro padrão de mercado para a construção de APIs.&lt;/p&gt;

&lt;p&gt;Um erro comum — e que muitas vezes confunde quem está começando a programar — é achar que o REST é um protocolo fechado ou um framework que você instala no projeto. Na verdade, ele é um estilo arquitetural. Esse conceito foi introduzido por Roy Thomas Fielding, no ano 2000, durante sua tese de doutorado. A grande sacada de Fielding foi abstrair como a própria web funciona, estabelecendo um conjunto de restrições lógicas para guiar o design de aplicações, visando o máximo de escalabilidade e confiabilidade nas interações (Fielding, 2000).&lt;/p&gt;

&lt;p&gt;O objetivo deste artigo é apresentar os fundamentos teóricos da arquitetura REST. Para isso, vamos explorar suas restrições principais, discutir a ideia de maturidade arquitetural (dando foco ao HATEOAS) e fazer um comparativo rápido com outras soluções do mercado, como o SOAP e o GraphQL, além de citar como isso se aplica no mundo real.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2 FUNDAMENTAÇÃO TEÓRICA&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para que um serviço web seja de fato considerado "RESTful", ele não pode apenas usar o HTTP de qualquer jeito; ele precisa seguir rigorosamente um conjunto de restrições de design. Como aponta Lecheta (2015), são essas regras que garantem que o sistema distribuído fique simples de entender e fácil de manter.&lt;/p&gt;

&lt;p&gt;A primeira grande restrição é a separação de responsabilidades entre cliente e servidor (Client-Server). Essa separação permite que a interface (o front-end) evolua totalmente independente do armazenamento de dados (o back-end). Além disso, a comunicação precisa ser obrigatoriamente stateless (sem estado). Isso significa que o servidor não guarda informações da sessão do usuário entre uma requisição e outra. Cada requisição que o cliente faz precisa ter em si todas as informações necessárias para ser compreendida e processada (Fielding, 2000). Na prática, desenhar o sistema assim é excelente porque facilita muito o balanceamento de carga (load balancing) em provedores de nuvem: como não há estado salvo, qualquer servidor que estiver disponível pode atender qualquer requisição.&lt;/p&gt;

&lt;p&gt;Outro pilar que define o REST é a interface uniforme. Para diminuir o acoplamento da arquitetura, exige-se que os recursos sejam identificados de forma única usando URIs (Uniform Resource Identifiers) e sejam manipulados por meio de suas representações (o JSON acabou virando o queridinho do mercado para isso). Para dizer ao servidor qual é a intenção da nossa requisição, usamos os verbos do próprio protocolo HTTP com valor semântico: GET para buscar, POST para criar, PUT/PATCH para atualizar e DELETE para remover (Lecheta, 2015).&lt;/p&gt;

&lt;p&gt;Mas será que toda API comercial que se diz "REST" é realmente REST? Para responder isso, utilizamos o Modelo de Maturidade de Richardson, que classifica as APIs em níveis (de 0 a 3). O ápice estrutural (Nível 3) é atingido quando aplicamos o conceito de HATEOAS (Hypermedia as the Engine of Application State). Segundo Richardson e Amundsen (2013), nesse nível, a resposta do servidor já traz "links" de hipermídia que guiam o cliente sobre quais são as próximas ações permitidas. Isso reduz drasticamente a dependência do front-end em relação à estrutura exata do back-end, permitindo que a API evolua sem quebrar as aplicações de quem a consome.&lt;/p&gt;

&lt;p&gt;Para dar um contexto melhor do ecossistema de desenvolvimento, a Tabela 1 compara o REST com outras duas abordagens de integração amplamente discutidas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tabela 1 - Comparativo entre Abordagens de Integração de Serviços Web&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25p5d6b76ww2815f58xa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25p5d6b76ww2815f58xa.png" alt=" " width="800" height="239"&gt;&lt;/a&gt;&lt;br&gt;
Fonte: Elaborado pelo autor com base em Lecheta (2015) e Seabra e Pinto (2019).&lt;/p&gt;

&lt;p&gt;Como podemos ver, o SOAP (Serrano; Hernantes; Gallardo, 2014) ainda tem seu espaço, mas costuma ficar restrito a sistemas legados ou corporativos que exigem contratos absurdamente rígidos. Já o GraphQL vem ganhando muita tração porque resolve perfeitamente os problemas de overfetching (trazer dados que não vão ser usados na tela) e underfetching (precisar fazer várias requisições para montar uma view única), o que é excelente para conexões mobile instáveis (Seabra; Pinto, 2019). Mesmo assim, o REST continua vantajoso por causa da sua curva de aprendizado menor, do suporte nativo ao cache da web e da simplicidade no roteamento.&lt;/p&gt;

&lt;p&gt;Olhando para a aplicação real disso, a área de Informática em Saúde é um ótimo exemplo. Barreto (2020) propõe arquiteturas de referência em e-saúde (como o H-KaaS) que mostram como o compartilhamento e a gestão de conhecimento complexo dependem de interfaces padronizadas. Além disso, o padrão global FHIR (Fast Healthcare Interoperability Resources), usado para conectar prontuários eletrônicos pelo mundo todo, aplica exatamente os princípios RESTful para garantir que dados tão críticos trafeguem com segurança e integridade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3 CONCLUSÃO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ao longo das disciplinas do curso, fica claro que a arquitetura REST extrapolou a tese original de Fielding para se tornar o "feijão com arroz" do design de aplicações modernas. O uso consciente de suas restrições — com destaque para a comunicação stateless, o aproveitamento de cache nativo e a interface uniforme — nos permite projetar softwares altamente escaláveis, algo essencial quando pensamos no volume de acessos dos sistemas de hoje em dia.&lt;/p&gt;

&lt;p&gt;É verdade que o mercado vive de novidades e que tecnologias voltadas para a otimização da entrega de dados, como o GraphQL, têm um papel importantíssimo nas arquiteturas de front-end mais modernas. Contudo, quando se trata de usar o protocolo HTTP de maneira idiomática (da forma como ele foi desenhado para funcionar), o REST segue imbatível.&lt;/p&gt;

&lt;p&gt;Para nós, futuros engenheiros de software, o verdadeiro desafio não está em substituir o REST, mas sim em parar de utilizá-lo pela metade. O foco deve ser buscar os níveis mais altos de maturidade arquitetural. Implementar o HATEOAS, por exemplo, ainda é a chave principal para garantir um baixo acoplamento, criando sistemas que sejam autoexplicativos, robustos e que consigam evoluir sem gerar dor de cabeça no longo prazo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REFERÊNCIAS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;BARRETO, R. G. &lt;strong&gt;H-KaaS: Uma arquitetura de referência baseada em conhecimento como serviço para e-saúde.&lt;/strong&gt; 2020. 121 f. Dissertação (Mestrado em Informática) – Universidade Federal da Paraíba, João Pessoa, 2020.&lt;/p&gt;

&lt;p&gt;FIELDING, R. T. &lt;strong&gt;Architectural styles and the design of network-based software architectures.&lt;/strong&gt; 2000. 162 f. Tese (Doutorado em Ciência da Computação) – University of California, Irvine, 2000.&lt;/p&gt;

&lt;p&gt;LECHETA, R. R. &lt;strong&gt;Web services RESTful: aprenda a criar web services RESTful em Java na nuvem do Google.&lt;/strong&gt; São Paulo: Novatec, 2015.&lt;/p&gt;

&lt;p&gt;RICHARDSON, L.; AMUNDSEN, M. &lt;strong&gt;RESTful Web APIs.&lt;/strong&gt; Sebastopol: O'Reilly Media, 2013.&lt;/p&gt;

&lt;p&gt;SEABRA, M.; PINTO, G. &lt;strong&gt;REST or GraphQL? A performance comparative study. In: SBCARS '19: Proceedings of the XIII Brazilian Symposium on Software Components, Architectures, and Reuse.&lt;/strong&gt; Salvador: ACM, 2019. p. 123-132.&lt;/p&gt;

&lt;p&gt;SERRANO, N.; HERNANTES, J.; GALLARDO, G. &lt;strong&gt;Service-oriented architecture and legacy systems.&lt;/strong&gt; IEEE Software, Los Alamitos, v. 31, n. 5, p. 15-19, 2014.&lt;/p&gt;

</description>
      <category>api</category>
      <category>architecture</category>
      <category>backend</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
