<?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: Edgar Augusto</title>
    <description>The latest articles on DEV Community by Edgar Augusto (@eded001).</description>
    <link>https://dev.to/eded001</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%2F1113660%2F23a4e788-3526-43f7-ab38-a4e8681136e0.jpg</url>
      <title>DEV Community: Edgar Augusto</title>
      <link>https://dev.to/eded001</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eded001"/>
    <language>en</language>
    <item>
      <title>O que é Git? É uma marca de gloss?</title>
      <dc:creator>Edgar Augusto</dc:creator>
      <pubDate>Sat, 26 Jul 2025 17:24:00 +0000</pubDate>
      <link>https://dev.to/eded001/o-que-e-git-e-uma-marca-de-gloss-3nbc</link>
      <guid>https://dev.to/eded001/o-que-e-git-e-uma-marca-de-gloss-3nbc</guid>
      <description>&lt;h2&gt;
  
  
  Git e GitHub
&lt;/h2&gt;

&lt;p&gt;“Git e GitHub são a mesma coisa?” Não. Nem de longe. E entender a diferença é essencial pra não passar vergonha.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Git&lt;/strong&gt; é uma ferramenta de controle de versão. Ela roda localmente no seu computador e registra tudo que você faz no seu código, como uma linha do tempo completa do seu projeto.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt; é uma plataforma online onde você armazena repositórios Git. Permite colaboração entre devs, revisão de código, issues, automações, pull requests e mais.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&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%2Firjm4lxczgrsnz8o1au4.jpg" 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%2Firjm4lxczgrsnz8o1au4.jpg" alt="Git vs GitHub" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resumo:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git = ferramenta de versionamento (local)&lt;/li&gt;
&lt;li&gt;GitHub = plataforma online que hospeda repositórios Git&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Você pode usar Git sem GitHub. Mas GitHub sem Git não existe.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ Seu PC com Git ] ────────&amp;gt; [ GitHub ]
     (local)                    (online)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Por que usar Controle de Versão
&lt;/h2&gt;

&lt;p&gt;Versionamento de código é como uma máquina do tempo. Cada alteração vira um commit, com:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O que foi alterado&lt;/li&gt;
&lt;li&gt;Quando foi alterado&lt;/li&gt;
&lt;li&gt;Quem alterou&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso organiza o caos, permite testes sem medo e mantém tudo rastreável.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ Commit 1 ]
    "Projeto criado"

      │
      ▼
[ Commit 2 ]
    "Adiciona login"

      │
      ▼
[ Commit 3 ]
    "Corrige bug no login"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você pode criar &lt;strong&gt;branches&lt;/strong&gt; para testar funcionalidades isoladas sem afetar o código principal.&lt;/p&gt;




&lt;h2&gt;
  
  
  Instalação do Git
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Baixe e instale
&lt;/h3&gt;

&lt;p&gt;Acesse: &lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;https://git-scm.com/downloads&lt;/a&gt;&lt;br&gt;
Baixe de acordo com seu sistema operacional.&lt;/p&gt;
&lt;h3&gt;
  
  
  Configure seu nome e e-mail
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Fulano de Tal"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email fulano@exemplo.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Criando um Repositório do Zero
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Crie um repositório no GitHub
&lt;/h3&gt;

&lt;p&gt;Acesse seu perfil e clique em &lt;strong&gt;"New Repository"&lt;/strong&gt;.&lt;br&gt;
Desative a opção &lt;strong&gt;"Add a README.md"&lt;/strong&gt; para clonar com um repositório limpo.&lt;/p&gt;
&lt;h3&gt;
  
  
  No terminal, rode os comandos:
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"# nome-do-repositorio"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; README.md
git add README.md
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"primeiro commit"&lt;/span&gt;
git branch &lt;span class="nt"&gt;-M&lt;/span&gt; main
git remote add origin https://github.com/seu-usuario/repositorio.git
git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Fluxo:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ git init ]
     │
[ git add README.md ]
     │
[ git commit -m "mensagem" ]
     │
[ git branch -M main ]
     │
[ git remote add origin &amp;lt;url&amp;gt; ]
     │
[ git push -u origin main ]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Clonando um Repositório
&lt;/h2&gt;

&lt;p&gt;Quer pegar um projeto já existente do GitHub?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/usuario/repositorio.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Fluxo:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ GitHub ] ────────&amp;gt; [ Seu PC ]
          (clone)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Atualizando seu projeto com alterações remotas
&lt;/h2&gt;

&lt;p&gt;Está colaborando com outros devs e quer pegar as últimas mudanças?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Fluxo:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ GitHub ] ────────&amp;gt; [ Seu PC ]
          (pull)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Enviando alterações pro repositório remoto
&lt;/h2&gt;

&lt;p&gt;Depois de fazer alterações no código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"mensagem clara do que foi feito"&lt;/span&gt;
git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Fluxo:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ Seu PC ] ────────&amp;gt; [ GitHub ]
          (push)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Dicas importantes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Faça commits pequenos e frequentes&lt;/li&gt;
&lt;li&gt;Escreva mensagens claras no commit&lt;/li&gt;
&lt;li&gt;Use branches pra testar novas funcionalidades&lt;/li&gt;
&lt;li&gt;Sempre use &lt;code&gt;git pull&lt;/code&gt; antes de &lt;code&gt;git push&lt;/code&gt; pra evitar conflitos&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Referência
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/book/pt-br/v2/Come%C3%A7ando-Sobre-Controle-de-Vers%C3%A3o" rel="noopener noreferrer"&gt;https://git-scm.com/book/pt-br/v2/Come%C3%A7ando-Sobre-Controle-de-Vers%C3%A3o&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>microsoft</category>
      <category>code</category>
    </item>
    <item>
      <title>Estrutura de dados</title>
      <dc:creator>Edgar Augusto</dc:creator>
      <pubDate>Thu, 26 Dec 2024 22:36:50 +0000</pubDate>
      <link>https://dev.to/eded001/estrutura-de-dados-4k7</link>
      <guid>https://dev.to/eded001/estrutura-de-dados-4k7</guid>
      <description>&lt;h2&gt;
  
  
  Definição
&lt;/h2&gt;

&lt;p&gt;De forma sintetizada, a &lt;strong&gt;&lt;em&gt;ED&lt;/em&gt;&lt;/strong&gt; (estrutura de dados) é usada para &lt;strong&gt;armazenar ou agrupar dados&lt;/strong&gt;. Existem diferentes formas de organizar dados dependendo do tipo de dado que tivermos e como podemos ou queremos dispor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Importância
&lt;/h2&gt;

&lt;p&gt;A ED é o &lt;strong&gt;ingrediente essencial na criação de algoritmos rápidos e poderosos&lt;/strong&gt;. Desse modo, ajudam a &lt;strong&gt;manusear e organizar os dados&lt;/strong&gt;, reduzindo sua complexidade e aumentando sua eficiência.&lt;/p&gt;

&lt;h2&gt;
  
  
  Classificações e tipos
&lt;/h2&gt;

&lt;p&gt;Estruturas de dados&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Linear

&lt;ul&gt;
&lt;li&gt;Estática

&lt;ol&gt;
&lt;li&gt;Vetor (array)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Dinâmica

&lt;ol&gt;
&lt;li&gt;Fila (queue)&lt;/li&gt;
&lt;li&gt;Pilha (stack)&lt;/li&gt;
&lt;li&gt;Lista lincada (linked list)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Não linear

&lt;ol&gt;
&lt;li&gt;Árvore (tree)&lt;/li&gt;
&lt;li&gt;Grafo (graph)&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Linear
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Definição
&lt;/h4&gt;

&lt;p&gt;Estrutura de dado em que os elementos são &lt;strong&gt;dispostos sequencialmente ou linearmente&lt;/strong&gt;, isso é, &lt;strong&gt;cada elemento que é adicionado ao seu último elemento&lt;/strong&gt;.&lt;/p&gt;

&lt;h5&gt;
  
  
  Estática
&lt;/h5&gt;

&lt;p&gt;Isso quer dizer que estrutura segue com um &lt;strong&gt;tamanho de memória fixo&lt;/strong&gt;. Logo, seu acesso aos elementos é mais fácil, como é o &lt;em&gt;vetor&lt;/em&gt;.&lt;/p&gt;

&lt;h6&gt;
  
  
  Vetor
&lt;/h6&gt;

&lt;p&gt;O vetor é uma estrutura de dado linear que guarda uma &lt;strong&gt;coleção de elementos do mesmo tipo&lt;/strong&gt;. Uma das suas principais características é de que seus elementos podem ser localizados facilmente, visto que estes são &lt;strong&gt;indexados a cada adição&lt;/strong&gt;. Então, &lt;strong&gt;cada elemento possui um índice&lt;/strong&gt; - começando por 0.&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%2F3dymxsnigulzi424uyu5.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%2F3dymxsnigulzi424uyu5.png" alt="Representação de um array" width="362" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Dinâmica
&lt;/h5&gt;

&lt;p&gt;Diferente da estrutura de dado linear, a dinâmica &lt;strong&gt;não possui um tamanho fixo&lt;/strong&gt;. É &lt;strong&gt;totalmente aleatório&lt;/strong&gt; e &lt;strong&gt;pode ser atualizado durante o processo de execução do programa&lt;/strong&gt;. Por exemplo: filas, pilhas e as listas lincadas.&lt;/p&gt;

&lt;h6&gt;
  
  
  Fila
&lt;/h6&gt;

&lt;p&gt;A fila segue o princípio do &lt;strong&gt;&lt;em&gt;FIFO&lt;/em&gt;&lt;/strong&gt; (First-In-First-Out ou Primeiro a entrar, primeiro a sair), que é um método em que o &lt;strong&gt;primeiro elemento que chegou vai ser processado e quaisquer elementos subsequentes serão processados&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%2Fre0oosq0vrbdg7rjsoag.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%2Fre0oosq0vrbdg7rjsoag.png" alt="Representação de uma fila" width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Pilha
&lt;/h5&gt;

&lt;p&gt;Diferente da fila, a pilha usa o princípio do &lt;strong&gt;LIFO&lt;/strong&gt; (Last In, First Out ou Último a entrar, primeiro a sair) que, simplesmente, &lt;strong&gt;o primeiro elemento é processado e o último elemento é processado primeiro&lt;/strong&gt;, ou seja, começa de trás pra frente.&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%2Fdik5ekud5ml17b7fspb9.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%2Fdik5ekud5ml17b7fspb9.png" alt="Representação de uma stack" width="661" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Lista lincada
&lt;/h5&gt;

&lt;p&gt;A lista lincada, diferente da fila e da pilha, segue com uma particularidade muito peculiar: &lt;strong&gt;seus elementos são armazenados em nós&lt;/strong&gt; (nodes), sendo estes conectados por &lt;em&gt;ponteiros&lt;/em&gt; - endereços de memória que apontam para uma variável - e &lt;strong&gt;só podem ser acessados de forma sequencial&lt;/strong&gt;. Logo, cada ponteiro aponta para o próximo nó.&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%2Flkyfrhe0upitupoe35bi.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%2Flkyfrhe0upitupoe35bi.png" alt="Representação de uma linked list" width="462" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Não linear
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Definição
&lt;/h4&gt;

&lt;p&gt;A estrutura não linear diferente da linear, &lt;strong&gt;os elementos não dispostos de forma sequencial e muito menos de forma linear&lt;/strong&gt;, o que implica dizer que &lt;strong&gt;não se pode atravessar todos os elementos de uma vez&lt;/strong&gt;, como é o caso da árvore e dos grafos.&lt;/p&gt;

&lt;h4&gt;
  
  
  Árvore
&lt;/h4&gt;

&lt;p&gt;A árvore segue uma organização baseada em uma &lt;strong&gt;hierarquia que consiste em nós (nodes) interligados por bordas (edges)&lt;/strong&gt;. Sendo o &lt;strong&gt;topo da árvore denominada "raiz" (root)&lt;/strong&gt; e essa &lt;strong&gt;raiz possui nós filhos&lt;/strong&gt; - relação de parent e child nodes.&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%2Fj0lv2jprco2q2yxdhn1w.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%2Fj0lv2jprco2q2yxdhn1w.png" alt="Representação de uma tree" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Grafo
&lt;/h4&gt;

&lt;p&gt;O grafo consiste em um &lt;strong&gt;conjunto finito de vértices (ou nós)&lt;/strong&gt; e por um &lt;strong&gt;conjunto de arestas (links) que conectam pares de nós&lt;/strong&gt;, representando um relacionamento entre entidades.&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%2Fe2vptpr1brxyzw5ye6h7.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%2Fe2vptpr1brxyzw5ye6h7.png" alt="Representação de um grafo" width="724" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Extra
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Stack Overflow
&lt;/h3&gt;

&lt;p&gt;Conhece a comunidade &lt;em&gt;&lt;a href="https://stackoverflow.com/" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt;&lt;/em&gt;? Duvido não conhecer, eu mesmo já tirei muitas fazendo pesquisas por lá. Bem, se você não conhece, o &lt;em&gt;Stack Overflow&lt;/em&gt; é uma comunidade dentro do ramo da programação/computação que é dedicada exclusivamente a perguntas e respostas. Mas pra quem já conhece, você conhece a origem do nome?&lt;/p&gt;

&lt;p&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%2F0hmirdkz7n1dftvtpmw3.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%2F0hmirdkz7n1dftvtpmw3.png" alt="Representação de um grafo" width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Stack overflow
&lt;/h3&gt;

&lt;p&gt;Afinal, o que é esse tal &lt;strong&gt;&lt;em&gt;stack overflow&lt;/em&gt;&lt;/strong&gt;? Agora referindo-se ao processo que ocorre, stack overflow, na sua tradução literal, equivale a &lt;strong&gt;estouro de pilha&lt;/strong&gt;, o que quer dizer que a &lt;strong&gt;pilha "vazou" ou "transbordou"&lt;/strong&gt;.&lt;br&gt;
Continuando o tópico anterior, de forma simplificada, o stack overflow é um processo em que se aloca demasiada memória pra dentro de uma pilha e essa pilha "transborda", visto que a pilha não suportava essa quantidade toda de memória. E o que isso quer dizer? Simples, que &lt;strong&gt;o programa tá alocando muita memória pra um espaço que não consegue armazenar o tanto de memória&lt;/strong&gt;. E isso pode ocorrer de várias formas e por diferentes fatores.&lt;/p&gt;

&lt;p&gt;Por exemplo, imagine que você utiliza uma biblioteca ou instanciou um objeto de uma classe e quer usar as funções/métodos dessa ferramenta. Até aí tudo bem, mas imagine que há uma limitação na quantidade de funções que podem ser chamadas. Então, você chama uma função que chama outras três funções para executar tal processo, e isso vai ocorrendo ao longo do seu código. Parece tranquilo, certo? Não, não é. Quando você chama várias funções, cada chamada é armazenada na pilha de execução (stack). A pilha tem um &lt;strong&gt;espaço limitado&lt;/strong&gt; e, se você fizer muitas chamadas aninhadas &lt;strong&gt;sem liberar a memória&lt;/strong&gt; (ou seja, sem que as funções retornem), você pode acabar causando um &lt;strong&gt;stack overflow&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;O stack overflow acontece quando a pilha de execução excede seu limite de memória, resultando em um &lt;strong&gt;&lt;em&gt;erro fatal&lt;/em&gt;&lt;/strong&gt; no programa. Se você estiver usando Windows, isso pode até causar a famosa &lt;strong&gt;&lt;em&gt;tela azul da morte&lt;/em&gt;&lt;/strong&gt; (BSOD ou Blue Screen of Death).&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%2Fyzfslpjvbhs994e8ma19.jpg" 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%2Fyzfslpjvbhs994e8ma19.jpg" alt="BSOD" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Portanto, é crucial gerenciar corretamente a memória e as chamadas de função para evitar esse problema e você também não gostaria que o seu programinha desse uma tela azul medonha como essa não é? Então, é importante estudar sobre alocação de memória, ponteiros e afins. Ou não... Hoje em dia, muitas linguagens de programação já cuidam disso. Diferentemente de linguagens mais robustas, como &lt;em&gt;C&lt;/em&gt;, por exemplo ou o temido &lt;em&gt;Assembly&lt;/em&gt;. Ainda assim, nós cuidamos do nosso "lixo" que, no contexto da programação, é chamado de &lt;strong&gt;&lt;em&gt;GC&lt;/em&gt;&lt;/strong&gt; ou &lt;strong&gt;&lt;em&gt;Garbage Collection&lt;/em&gt;&lt;/strong&gt; (coleta de lixo). Mas, ainda assim, é muito difícil fazer um stack overflow com linguagens modernas com JavaScript, PHP, Python... Mas não impossível...&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/data-structures/" rel="noopener noreferrer"&gt;GeeksforGeeks | Data Structures Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/data-structures/" rel="noopener noreferrer"&gt;GeeksforGeeks | FIFO (First-In-First-Out) approach in Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/data-structures/" rel="noopener noreferrer"&gt;GeeksforGeeks | LIFO (Last-In-First-Out) approach in Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linguagemc.com.br/ponteiros-em-c/" rel="noopener noreferrer"&gt;Intellectuale | Ponteiros em C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/what-is-linked-list/" rel="noopener noreferrer"&gt;GeeksforGeeks | Basic Terminologies of Linked List&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/what-is-linked-list/" rel="noopener noreferrer"&gt;GeeksforGeeks | Introduction to Tree Data Structure - GeeksforGeeks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/dsa/dsa_intro.php" rel="noopener noreferrer"&gt;W3Schools | Introduction  to Data Structures and Algorithms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/26158/how-does-a-stack-overflow-occur-and-how-do-you-prevent-it" rel="noopener noreferrer"&gt;Stack Overflow | How does a "stack overflow" occur and how do you prevent it?&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>data</category>
      <category>iniciant</category>
      <category>ds</category>
      <category>programming</category>
    </item>
    <item>
      <title>O que é REST API?</title>
      <dc:creator>Edgar Augusto</dc:creator>
      <pubDate>Sun, 15 Dec 2024 22:26:54 +0000</pubDate>
      <link>https://dev.to/eded001/o-que-e-rest-api-308f</link>
      <guid>https://dev.to/eded001/o-que-e-rest-api-308f</guid>
      <description>&lt;h2&gt;
  
  
  Motivação
&lt;/h2&gt;

&lt;p&gt;Esse artigo foi escrito com o intuito principal de compartilhar conhecimento e, principalmente, ensinar quem está começando agora. Visto que, este é um artigo de estudante para estudantes, apesar de eu já estudar programação há alguns anos.&lt;/p&gt;

&lt;p&gt;Com o avanço da tecnologia e da internet do século passado para o período contemporâneo, fomos obrigados a desenvolver ferramentas que nos permitissem criar aplicações com mais facilidade sem ter a necessidade da robustez.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Já ouviu falar no termo &lt;em&gt;REST API&lt;/em&gt;? Bem, REST API nada mais é do que uma API que segues os pilares essenciais do design da arquitetura REST. E o que é REST? REST é um sigla para &lt;em&gt;representational state transfer&lt;/em&gt; que traduzindo fica &lt;em&gt;transferência de estado representacional&lt;/em&gt;, que são basicamente um conjunto de regras e protocolos que devem ser considerados para o desenvolvimento de uma REST API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Noções básicos
&lt;/h3&gt;

&lt;p&gt;Antes de iniciar as explicações, precisamos primeiro entender alguns conceitos e ideias pra somente depois partir pra explicações mais detalhadas e técnicas, pode ser? Então vamos lá.&lt;/p&gt;

&lt;h4&gt;
  
  
  URI
&lt;/h4&gt;

&lt;p&gt;URI é uma sigla para &lt;em&gt;Uniform Resource Identifier&lt;/em&gt; ou &lt;em&gt;Identificador Uniforme de Recursos&lt;/em&gt; que é simplesmente uma sintaxe que atribui a cada documento web (HTML) um endereço único.&lt;/p&gt;

&lt;h5&gt;
  
  
  Estrutura
&lt;/h5&gt;

&lt;p&gt;Sua estrutura é muito simples e é composta de 2 elementos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;URL (Uniform Resource Locator)&lt;/em&gt;&lt;/strong&gt;
Localizador de recurso&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;URN (Uniform Resource Name)&lt;/em&gt;&lt;/strong&gt;
Nome do recurso&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;https://www.google.com/imghp?hl=pt-BR&amp;amp;authuser=0&amp;amp;ogbl&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;URL: "&lt;a href="https://www.google.com/imghp" rel="noopener noreferrer"&gt;https://www.google.com/imghp&lt;/a&gt;"&lt;/li&gt;
&lt;li&gt;URN: "?hl=pt-BR&amp;amp;authuser=0&amp;amp;ogbl"&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  HTTP
&lt;/h4&gt;

&lt;p&gt;HTTP é uma sigla para &lt;em&gt;HyperText Transfer Protocol&lt;/em&gt; ou &lt;em&gt;Protocolo de Transferência de Hipertexto&lt;/em&gt;. Esse eu sei que você já viu ou ouviu falar em algum lugar. Talvez você tenha visto naqueles links de compartilhamento ou até mesmo quando você vai digitar o site no seu navegador, certo? Então, o HTTP é um protocolo usado para a transmissão (envio) de documentos de hipermídia, como é o caso do HTML.&lt;/p&gt;

&lt;h4&gt;
  
  
  HTML
&lt;/h4&gt;

&lt;p&gt;HTML é uma sigla para &lt;em&gt;HyperText Markup Language&lt;/em&gt; ou &lt;em&gt;Linguagem de marcação de hipertexto&lt;/em&gt;. Acredito que você também certamente ouviu falar! O HTML nada mais é do que um documento que é a página web, simplesmente. Em outras palavras, o HTML é o documento de construção de páginas da web.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é uma API?
&lt;/h2&gt;

&lt;p&gt;Bem, de forma resumida, uma API nada mais é do que uma ferramenta que segue um conjunto de protocolos e viabiliza integrações através de uma interface que permite essa integração. Mas o que exatamente significa a palavra? "API" é um acrônimo para &lt;em&gt;Application Programming Interface&lt;/em&gt; e sua tradução literal é &lt;em&gt;Interface de Programação de Aplicação&lt;/em&gt;. Além disso, uma API comumente oferece um conjunto de interfaces &lt;/p&gt;

&lt;h3&gt;
  
  
  Quais suas finalidades?
&lt;/h3&gt;

&lt;p&gt;Uma das suas principais finalidades é viabilizar a &lt;strong&gt;comunicação entre serviços&lt;/strong&gt; e esse processo acontece através do esquema de requisições e respostas. Ou seja, uma das principais funções da API é permitir que duas extremidades, ou melhor, dois serviços realizem uma &lt;strong&gt;troca ou envio de informações&lt;/strong&gt; e esse processo acontece justamente por meio de requisições e respostas ou &lt;strong&gt;&lt;em&gt;requests&lt;/em&gt;&lt;/strong&gt; e &lt;strong&gt;&lt;em&gt;responses&lt;/em&gt;&lt;/strong&gt;. E esse tipo de API é conhecida como &lt;strong&gt;Web API&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%2F97nf0zp7j8ssxcl30w0q.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%2F97nf0zp7j8ssxcl30w0q.png" alt="Representação simples de requisições e respostas" width="482" height="134"&gt;&lt;/a&gt;&lt;br&gt;
Além disso, outra finalidade finalidade que uma API pode ter é de desenvolvimento, ou seja, a API fornece interfaces para o programador desenvolvedor aplicações. Um bom exemplo é o &lt;strong&gt;&lt;em&gt;HTML DOM API&lt;/em&gt;&lt;/strong&gt;, que fornece ao programador as interfaces necessários para a manipulações de elementos no documento HTML ou o # &lt;strong&gt;&lt;em&gt;Web Storage API&lt;/em&gt;&lt;/strong&gt;, que permite que o programador armazene dados com o navegador através do esquema de chave-valor.&lt;/p&gt;
&lt;h2&gt;
  
  
  Arquitetura Web
&lt;/h2&gt;

&lt;p&gt;O estudioso &lt;em&gt;Roy Fielding&lt;/em&gt;, preocupado com a escalabilidade da web, reconheceu que esta é governada por um conjunto de &lt;strong&gt;restrições-chave&lt;/strong&gt;. Dito isso, ele e outros estudiosos propuseram uma abordagem pragmática: satisfazer uniformemente todas as suas restrições. Para isso, eles agruparam 6 categorias. Que são:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Client-server&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uniform interface&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layered system&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateless&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code-on-demand&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Client-server
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"A separação de preocupações é o tema central das restrições cliente-servidor da Web - &lt;strong&gt;(Mark Massé, 2012, p. 21)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;De forma simplificada, a web como conhecemos é dividida da seguinte maneira: &lt;strong&gt;&lt;em&gt;clientes&lt;/em&gt;&lt;/strong&gt; e &lt;strong&gt;&lt;em&gt;servidores&lt;/em&gt;&lt;/strong&gt;. De um lado temos o &lt;strong&gt;usuário ou programador&lt;/strong&gt; (cliente) e do outro o &lt;strong&gt;fornecedor de recursos&lt;/strong&gt; (servidor).&lt;br&gt;
Essa comunicação entre cliente e servidor acontece por meio de &lt;strong&gt;requisições e respostas&lt;/strong&gt;.&lt;br&gt;
O cliente faz a requisição, o servidor recebe essa requisição e trabalha em cima dela, podendo atuar como um intermediador de um banco de dados, por exemplo, ou também simplesmente devolvendo informações relevantes.&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%2Fapy44j9zzo3m8e7uqd4b.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%2Fapy44j9zzo3m8e7uqd4b.png" alt="Representação de requisições e respostas com um servidor intermediando o cliente e o DB" width="442" height="491"&gt;&lt;/a&gt;&lt;br&gt;
A graça disso tudo tá em simplesmente não saber o que acontece lá do outro lado quando a informação chega, o que importa mesmo é a resposta.&lt;/p&gt;
&lt;h3&gt;
  
  
  Uniform interface
&lt;/h3&gt;

&lt;p&gt;As interações nos componentes da internet dependem da &lt;strong&gt;&lt;em&gt;uniformidade de suas interfaces&lt;/em&gt;&lt;/strong&gt; e se algum de seus componentes se desviar dos padrões, o sistema de comunicação certamente falhará. Portanto, estes componente interoperam dentro de 4 restrições que foram identificadas por Fielding:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Identificação de recursos&lt;/em&gt;&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Manipulação de recursos por meio de representações&lt;/em&gt;&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Mensagens auto descritivas&lt;/em&gt;&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;HATEOAS (Hypermedia as the engine of application state)&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;
  
  
  Identificação de recursos
&lt;/h4&gt;

&lt;p&gt;Cada item na internet é um recurso e pode ser &lt;strong&gt;endereçado com uma URI&lt;/strong&gt;, ou seja, &lt;strong&gt;recursos individuais são e devem ser identificados usando URIs&lt;/strong&gt;. Então, os recursos precisam ser &lt;strong&gt;&lt;em&gt;separados de forma conceitual&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Manipulação de recursos por meio de representações
&lt;/h4&gt;

&lt;p&gt;Os clientes manipulam as representações de recursos, permitindo várias &lt;strong&gt;maneiras de interações&lt;/strong&gt;. Por exemplo, na resposta de uma requisição de de uma API, sua resposta pode retornar um &lt;em&gt;JSON&lt;/em&gt; ou &lt;em&gt;XML&lt;/em&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Mensagens auto descritivas
&lt;/h4&gt;

&lt;p&gt;O &lt;strong&gt;estado desejado do recurso&lt;/strong&gt; pode ser representado &lt;strong&gt;dentro da mensagem de solicitação&lt;/strong&gt; ou da &lt;strong&gt;resposta do servidor&lt;/strong&gt;. Além disso, é importante que uma mensagem HTTP forneça um cabeçalho (&lt;em&gt;header&lt;/em&gt;) com metadados (&lt;em&gt;metadatas&lt;/em&gt;) com informações de estado do recurso, formato, tamanho da mensagem, sua mensagem em si e afins. Segue um exemplo abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /index.html HTTP/1.1

Host: www.exemplo.com

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4

Referer: http://www.google.com

Cookie: PHPSESSID=1234567890
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  HATEOAS
&lt;/h4&gt;

&lt;p&gt;A sigla indica &lt;em&gt;Hypermedia as the engine of application state&lt;/em&gt; ou &lt;em&gt;Hipermídia como motor do estado da aplicação&lt;/em&gt;. A representação de estado de um recurso inclui links para recursos relacionados permitindo que os clientes &lt;strong&gt;descubram&lt;/strong&gt; dinamicamente como navegar e interagir com recursos disponíveis.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;code&gt;example.com/date/yyyy/mm/dd&lt;/code&gt;&lt;br&gt;
É intuitivo que o usuário deve colocar o ano, mês e o dia pra acessar diretórios e, consequentemente, acessar outros diretórios também de forma intuitiva.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sistema em camadas
&lt;/h3&gt;

&lt;p&gt;As restrições do sistema em camadas permitem que &lt;strong&gt;intermediários de redes&lt;/strong&gt; sejam implantados de forma visível através de uma interface e o seu propósito é justamente interceptar a &lt;strong&gt;comunicação cliente-servidor&lt;/strong&gt;. Por exemplo: &lt;em&gt;proxies&lt;/em&gt;, &lt;em&gt;gateways&lt;/em&gt;, &lt;em&gt;balanceadores de carga&lt;/em&gt;, &lt;em&gt;firewalls&lt;/em&gt; e afins.&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%2F0hn0to0l894pb82a4uoo.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%2F0hn0to0l894pb82a4uoo.png" alt="Representação simples de requisições e respostas" width="451" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Cache
&lt;/h4&gt;

&lt;p&gt;As restrições de cachê define a "&lt;strong&gt;cacheabilidade&lt;/strong&gt;" dos dados de cada resposta, isso é, é determinado o &lt;strong&gt;custo daquela mensagem&lt;/strong&gt;. Sendo assim, é importante ter em mente noções de &lt;em&gt;latência&lt;/em&gt;, &lt;em&gt;disponibilidade&lt;/em&gt; e &lt;em&gt;confiabilidade&lt;/em&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Stateless
&lt;/h4&gt;

&lt;p&gt;A restrição sem estado define que o servidor web não é &lt;strong&gt;necessário memorizar o estado da aplicação&lt;/strong&gt; dos seus clientes, logo, cada cliente deve incluir o contexto da informação a cada interação com um servidor web.&lt;/p&gt;

&lt;h4&gt;
  
  
  Code-on-demand
&lt;/h4&gt;

&lt;p&gt;Code-on-demand ou código sob demanda é a &lt;strong&gt;transferência temporária de programas executáveis&lt;/strong&gt; - &lt;em&gt;scripts&lt;/em&gt; ou &lt;em&gt;plug-ins&lt;/em&gt; - para os clientes. Esse processo permite um acoplamento tecnológico entre servidores web e seus clientes. Um exemplo de plug-in que segue esse modelo de transferência de programas executáveis é o &lt;em&gt;Adobe Flash&lt;/em&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%2Fkll8qe8e7i1xy5d27err.jpg" 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%2Fkll8qe8e7i1xy5d27err.jpg" alt="Logo do Adobe Flash" width="250" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tá... E o que é REST API?
&lt;/h3&gt;

&lt;p&gt;Bem, &lt;em&gt;REST API&lt;/em&gt; nada mais é do que uma &lt;em&gt;API&lt;/em&gt; que o &lt;strong&gt;estilo de arquitetura REST&lt;/strong&gt;. Ter uma REST API no seu projeto ou serviço faz dela &lt;strong&gt;&lt;em&gt;RESTful&lt;/em&gt;&lt;/strong&gt;. Logo, é correto dizer que esse serviço possui uma série de recursos interligados de forma organizada a seguir um modelo de disposição de elementos.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"APIs REST bem projetadas podem atrair desenvolvedores de clientes para usar serviços web. No mercado aberto de hoje, onde serviços web rivais estão competindo por atenção, um design de API REST esteticamente agradável é um recurso essencial" - &lt;strong&gt;(Mark Massé, 2012, p. 24)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Analisando as entranhas de requisições e respostas
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Verbos/métodos
&lt;/h4&gt;

&lt;p&gt;Requisições que definem &lt;strong&gt;&lt;em&gt;padrões de comunicação&lt;/em&gt;&lt;/strong&gt; entre um servidor e um cliente.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GET&lt;/strong&gt;: solicita recurso(s);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POST&lt;/strong&gt;: adiciona recurso(s);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PUT&lt;/strong&gt;: atualiza determinado(s) recurso(s);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DELETE&lt;/strong&gt;: remove recurso(s)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Códigos de status
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;200 Ok&lt;/strong&gt;: requisição bem sucedida;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;201 Created&lt;/strong&gt;: novo(s) recurso(s) criado(s) com sucesso;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;204 No Content&lt;/strong&gt;: recurso(s) atualizado(s) com sucesso;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;400 Bad Request&lt;/strong&gt;: a requisição foi mal elaborada;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;401 Unauthorized&lt;/strong&gt;: login inválido pois contém credenciais inválidas;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;403 Forbidden&lt;/strong&gt;: recurso não autorizado;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;404 Not Found&lt;/strong&gt;: recurso(s) não encontrado(s);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;405 Method Not Allowed&lt;/strong&gt;: o servidor não oferece resposta para esse tipo de método;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;500 Internal Server Error&lt;/strong&gt;: erro interno do servidor - como um bug ou um erro no código, por exemplo;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;503 Service Unavailable&lt;/strong&gt;: o servidor teve muitas requisições e está fora de ar temporariamente - não necessariamente precisa ser um ataque de negação de serviço (DDoS)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;a href="https://www.significados.com.br/interface/" rel="noopener noreferrer"&gt;Significados | Interface: o que é e significado (sistema ou software)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.alura.com.br/artigos/api" rel="noopener noreferrer"&gt;Alura | API: entenda o que é, para quê serve e qual a sua importância | Alura&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/JSON" rel="noopener noreferrer"&gt;MDN | JSON - JavaScript &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.treinaweb.com.br/blog/o-que-e-hateoas/" rel="noopener noreferrer"&gt;TreinaWeb | O que é HATEOAS?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://lunnary.com.br/glossario/o-que-e-http-request-header-cabecalho-de-requisicao-http/" rel="noopener noreferrer"&gt;Lunnary | O que é: HTTP Request Header (Cabeçalho de Requisição HTTP)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.devmedia.com.br/http-headers/41219" rel="noopener noreferrer"&gt;Devmedia | HTTP: Headers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.devmedia.com.br/http-verbos/41224" rel="noopener noreferrer"&gt;Devmedia | HTTP: Verbos&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Methods" rel="noopener noreferrer"&gt;MDN | Métodos de requisição HTTP - HTTP&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://faun.pub/getting-started-with-http-verbs-a4050ec4d6ef" rel="noopener noreferrer"&gt;Bright | Getting Started With HTTP Verbs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.hostinger.com.br/tutoriais/o-que-significa-erro-403" rel="noopener noreferrer"&gt;Hostinger | Erro 403 Forbidden: O Que Significa e Como Corrigir&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405" rel="noopener noreferrer"&gt;MDN | 405 Method Not Allowed - HTTP&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500" rel="noopener noreferrer"&gt;MDN | 500 Internal Server Error - HTTP&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.hostinger.com.br/tutoriais/como-corrigir-o-erro-interno-500-servidor-no-wordpress#O_que_e_o_Erro_500" rel="noopener noreferrer"&gt;Hostinger | HTTP Erro 500: Aprenda a Corrigir o Erro Interno do Servidor&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://kinsta.com/pt/base-de-conhecimento/endpoint-api/" rel="noopener noreferrer"&gt;Kinsta | O que é um Endpoint de API?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://pt.stackoverflow.com/questions/86399/qual-a-diferen%C3%A7a-entre-endpoint-e-api" rel="noopener noreferrer"&gt;Stack Overflow | Qual a diferença entre endpoint e API?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.techtudo.com.br/listas/2020/06/o-que-e-api-e-para-que-serve-cinco-perguntas-e-respostas.ghtml" rel="noopener noreferrer"&gt;TechTudo | O que é API e para que serve? Cinco perguntas e respostas&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API" rel="noopener noreferrer"&gt;MDN | The HTML DOM API - Web APIs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://developer.mozilla.org/pt-BR/docs/Web/API/Web_Storage_API" rel="noopener noreferrer"&gt;MDN | API de Armazenamento na Web - APIs da Web&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP" rel="noopener noreferrer"&gt;MDN | HTTP&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML" rel="noopener noreferrer"&gt;MDN | HTML: HyperText Markup Language&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.redhat.com/pt-br/topics/api/what-is-a-rest-api" rel="noopener noreferrer"&gt;Red Hat | O que é uma API REST?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.controle.net/faq/cliente-servidor-uma-estrutura-para-a-computacao-centralizada" rel="noopener noreferrer"&gt;Controle.net | Cliente-Servidor, uma estrutura lógica para a computação centralizada&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://stackoverflow.com/questions/25172600/rest-what-exactly-is-meant-by-uniform-interface" rel="noopener noreferrer"&gt;Stack Overflow | REST - What exactly is meant by Uniform Interface?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.geeksforgeeks.org/rest-api-architectural-constraints/" rel="noopener noreferrer"&gt;GeeksforGeeks | REST API Architectural Constraints&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://docs.oracle.com/en/cloud/saas/warehouse-management/22c/owmre/optional-trailing-slashes.html" rel="noopener noreferrer"&gt;Oracle | REST API Guide&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;a href="https://stackoverflow.com/questions/25172600/rest-what-exactly-is-meant-by-uniform-interface" rel="noopener noreferrer"&gt;Stack Overflow | REST - What exactly is meant by Uniform Interface?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Oluwatosin, H. S. (2014). Client-server model. IOSR Journal of Computer Engineering, 16(1), 67-71.&lt;/li&gt;
&lt;li&gt;Mark Massé. REST API Design Rulebook. United States of America: O’Reilly Media, 2012. 114 p.&lt;/li&gt;
&lt;li&gt;Leonard Richardson, Mike Amundsen. RESTful Web APIs. United States of America: O’Reilly Media, 2012. 404 p.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>rest</category>
      <category>api</category>
      <category>web</category>
      <category>uri</category>
    </item>
  </channel>
</rss>
