<?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>Forem: Ezequiel Otoni</title>
    <description>The latest articles on Forem by Ezequiel Otoni (@zeotoni).</description>
    <link>https://forem.com/zeotoni</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%2F1058759%2F27c2bdf9-ec81-4821-834b-f0b2cdc4aad3.png</url>
      <title>Forem: Ezequiel Otoni</title>
      <link>https://forem.com/zeotoni</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zeotoni"/>
    <language>en</language>
    <item>
      <title>Iniciando no Angular: Dicas e estrutura inicial</title>
      <dc:creator>Ezequiel Otoni</dc:creator>
      <pubDate>Thu, 22 Aug 2024 14:51:01 +0000</pubDate>
      <link>https://forem.com/zeotoni/iniciando-no-angular-dicas-e-estrutura-inicial-40gi</link>
      <guid>https://forem.com/zeotoni/iniciando-no-angular-dicas-e-estrutura-inicial-40gi</guid>
      <description>&lt;p&gt;Se você é um Dev Front-End iniciante que está querendo vir pro lado Angular da força, já está de parabéns só pela decisão acertada. Esse artigo é o primeiro de uma série que tem o intuito de entender e espalhar a palavra desse framework tão amado na comunidade. Boa leitura!&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  Sumário
&lt;/h4&gt;

&lt;p&gt;Por que Angular?&lt;br&gt;
Iniciando um projeto&lt;br&gt;
Estrutura inicial&lt;br&gt;
Entendendo a inicialização&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Por que usar Angular?&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Bom, porque ele é melhor. E pronto!&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%2F36yr97pdtek1c61u3ebt.gif" 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%2F36yr97pdtek1c61u3ebt.gif" alt="Gif de uma mulher dizendo: " width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na verdade, o Angular é um framework robusto que adota uma arquitetura baseada em componentes reutilizáveis e escaláveis, utiliza o TypeScript que é uma linguagem com tipagem estática, possui tudo o que é necessário para o desenvolvimento web como roteamento, validação de formulários, comunicação http e gerenciamento de estado. Sem falar do sistema modular, injeção de dependências e a CLI (interface de linha de comando) integrada que facilita muito no desenvolvimento das aplicações. Já ficou óbvio que ele é o melhor.&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%2Flyr5529e86lly2tmfrua.gif" 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%2Flyr5529e86lly2tmfrua.gif" alt="Gif de um homem dizendo eu avisei" width="500" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas vamos entender melhor sua estrutura.&lt;/p&gt;




&lt;h3&gt;
  
  
  Iniciando o projeto&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;O primeiro passo é instalar a CLI do Angular na nossa máquina. No terminal você pode digitar o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; npm install -g @angular/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui estamos instalando globalmente a versão mais recente da CLI. Após isso pelo terminal escolha um diretório para criar o projeto usando o comando padrão do Angular:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; ng new 'nome do projeto'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O projeto vai começar a ser criado e nesse processo você terá que escolher o formato de estilo que será usado (CSS, SCSS, SASS, LESS) e se o projeto vai usar um sistema de roteamento. No estilo você pode escolher o que mais gosta de utilizar, mas sobre o roteamento, falaremos melhor em outros artigos. Ao final seu projeto vai ser criado com as configurações escolhidas e na versão da CLI instalada.&lt;/p&gt;

&lt;p&gt;Mas e se você não quiser instalar a CLI globalmente e nem quiser uma versão fixa do Angular na sua máquina? Nesse caso podemos usar um atalho:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx -p @angular/cli@16 ng new jornada-coders --style=scss --routing=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando significa:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;npx&lt;/strong&gt;: O npx é um executor de pacotes do npm que, me permite nesse caso, criar o projeto com uma versão do Angular que não tenho instalada localmente.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;-p @angular/cli@16&lt;/strong&gt;: Indica o pacote Angular CLI e a versão que vamos utilizar. Nesse caso escolhi a versão 16 mas poderia ser outra por exemplo &lt;code&gt;@angular/cli@13.2.0&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ng new jornada-coders&lt;/strong&gt;: Esse comando já é conhecido dos devs Angular pois é a forma padrão de iniciar um projeto. Estamos dizendo para criar um novo projeto e o nome dele.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;--style=scss&lt;/strong&gt;: aqui já estou escolhendo que meu projeto vai usar &lt;code&gt;scss&lt;/code&gt; que é o que uso normalmente. Se você não colocar nada vai poder escolher antes de o projeto ser criado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;--routing=false&lt;/strong&gt;: Aqui é similar pois já estou indicando que meu projeto não vai ser criado com um modulo de rotas. Caso você também não coloque essa parte, vai poder que escolher antes do projeto ser criado.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Após isso você terá algo assim:&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%2F0jfjkqa581xqe2xzhmf7.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%2F0jfjkqa581xqe2xzhmf7.png" alt="Imagem de uma estrutura de pastas do projeto criado" width="341" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Um projeto inicial Angular padrão. Entrando na pasta do projeto pelo terminal temos acesso à CLI integrada e digitando o comando &lt;code&gt;ng serve&lt;/code&gt; , nossa aplicação será iniciada no endereço padrão do Angular &lt;code&gt;http://localhost:4200/&lt;/code&gt;. Abrindo esse link teremos nossa aplicação rodando localmente:&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%2Fdiadtd9eh4edv0entqiw.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%2Fdiadtd9eh4edv0entqiw.png" alt="Imagem da aplicação do Angular aberta em um navegador" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Estrutura inicial&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Um projeto Angular é criado com muitos arquivos e pastas mas é uma estrutura fácil de compreender. Vamos ver os principais que são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;src/&lt;/strong&gt;: É o diretório principal onde o código da aplicação vai ficar.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;app/&lt;/strong&gt;: É o componente inicial da aplicação e vai conter os demais componentes, módulos e serviços criados. Ele é criado com o padrão do Angular que é um arquivo &lt;code&gt;.html&lt;/code&gt;, um de estilo &lt;code&gt;.scss&lt;/code&gt;, um de script &lt;code&gt;.ts&lt;/code&gt;, um de teste &lt;code&gt;.spec.ts&lt;/code&gt; e um módulo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;app.module.ts&lt;/strong&gt;: Esse é o módulo raiz que declara e importa os componentes e outros módulos que serão criados na aplicação.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;assets/&lt;/strong&gt;: Pasta para armazenar imagens e outros recursos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;styles.scss&lt;/strong&gt;: É o arquivo raiz de estilos da aplicação.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;index.html&lt;/strong&gt;: É o arquivo HTML raiz da aplicação. É ele que será exibido no navegador.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;main.ts&lt;/strong&gt;: Arquivo raiz de script da aplicação. É ele que vai iniciar o projeto.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;angular.json&lt;/strong&gt;: Esse é o arquivo de configuração que define como a CLI deve construir e compilar o projeto. Contém as informações principais da aplicação.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;package.json&lt;/strong&gt;: Lista as dependências e scripts do projeto.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;tsconfig.json&lt;/strong&gt;: É um arquivo de configuração do TypeScript, que contém as configurações do compilador.&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  Entendendo a inicialização&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Agora que entendemos os principais arquivos vamos entender como o Angular inicializa a aplicação. Vamos apagar tudo no arquivo &lt;code&gt;app.component.html&lt;/code&gt; e vamos colocar o clássico &lt;code&gt;&amp;lt;h1&amp;gt;Hello World!&amp;lt;/h1&amp;gt;&lt;/code&gt;. Ao subir a aplicação novamente podemos ver a mudança. &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%2F42jj5rqaobe5wb59ypx5.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%2F42jj5rqaobe5wb59ypx5.png" alt="print da tela da aplicação" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas se temos um arquivo &lt;strong&gt;index.html&lt;/strong&gt; que é a entrada da aplicação, por que o que colocamos no app.component é que aparece no navegador? Na verdade o que está acontecendo é:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1&lt;/strong&gt;- Primeiro o Angular encontra o arquivo &lt;code&gt;index.html&lt;/code&gt;, que contém no &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;, apenas um seletor que é o &lt;code&gt;&amp;lt;app-root&amp;gt;&amp;lt;/app-root&amp;gt;&lt;/code&gt;. É nesse seletor que vai ser injetado o conteúdo principal da aplicação.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;`. Ao subir a aplicação novamente podemos ver 
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"utf-8"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;JornadaCoders&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;base&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"icon"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"image/x-icon"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"favicon.ico"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;app-root&amp;gt;&amp;lt;/app-root&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2&lt;/strong&gt; - O Angular define qual é o componente inicial da aplicação através da propriedade &lt;code&gt;bootstrap&lt;/code&gt; no &lt;code&gt;app.module.ts&lt;/code&gt;. Vamos entender esse módulo:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;NgModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;BrowserModule&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@angular/platform-browser&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;AppComponent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./app.component&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;NgModule&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;declarations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;AppComponent&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;BrowserModule&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;providers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;
  &lt;span class="na"&gt;bootstrap&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;AppComponent&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AppModule&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Um módulo é uma classe TypeScript decorada com a anotação &lt;code&gt;NgModule&lt;/code&gt;. Nela agrupamos componentes, services, diretivas deixando tudo organizado e modularizado, pois em cada módulo, precisamos configurar apenas o que é preciso naquela parte da aplicação. Aqui vemos o módulo raiz então ele vai lidar com as configurações globais da aplicação como inicialização e importação de outros módulos que ficarão disponíveis globalmente. Ele possui algumas propriedades que são: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;declarations&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aqui declaramos componentes, diretivas ou serviços desse mesmo módulo. Nesse caso o &lt;code&gt;AppComponent&lt;/code&gt;. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

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

&lt;ul&gt;
&lt;li&gt;Aqui listamos os módulos que estamos importando, podendo assim usar seus componentes ou diretivas no nosso. Nesse caso só estamos importando o &lt;code&gt;BrowserModule&lt;/code&gt; que é um módulo necessário para que nossa aplicação funcione em navegadores. Ele só precisa ser importado nesse módulo raiz.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

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

&lt;ul&gt;
&lt;li&gt;Aqui colocamos os serviços que serão fornecidos pelo módulo. Esses serviços ficarão disponíveis para injeção de dependência em todo o módulo e nos módulos que o importam. Nesse caso não temos nada então podemos deixar vazio.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

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

&lt;ul&gt;
&lt;li&gt;E por fim, aqui colocamos os componentes que são carregados ao iniciar a aplicação. Devemos colocar essa propriedade apenas no módulo raiz. E essa é a propriedade responsável por injetar algo no seletor &lt;code&gt;&amp;lt;app-root&amp;gt;&lt;/code&gt; do arquivo &lt;code&gt;index.html&lt;/code&gt;. Nela estamos dizendo que o componente a ser carregado ao iniciar a aplicação é o &lt;code&gt;AppComponent&lt;/code&gt;. Sendo assim o Angular vai injetar esse componente no &lt;code&gt;&amp;lt;app-root&amp;gt;&lt;/code&gt;, e o que colocarmos no AppComponent vai ser mostrado no navegador.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;p&gt;E é assim que o Angular funciona. Ele parte do módulo principal para iniciar a aplicação e a partir dele, podemos criar outros módulos, páginas, componentes, serviços. Tudo vai sempre seguir essa estrutura modularizada e organizada tornando a construção e a manutenção de uma aplicação fácil, eficiente e concisa. Espero ter conseguido mostrar como é simples esse início e atiçado sua curiosidade. Te aguardo nos próximos artigos!&lt;/p&gt;

</description>
      <category>angular</category>
      <category>frontend</category>
      <category>beginners</category>
      <category>devweb</category>
    </item>
    <item>
      <title>Como fazer Deploy de uma api com Json-Server</title>
      <dc:creator>Ezequiel Otoni</dc:creator>
      <pubDate>Sun, 15 Oct 2023 21:05:55 +0000</pubDate>
      <link>https://forem.com/zeotoni/como-fazer-deploy-de-uma-api-com-json-server-321g</link>
      <guid>https://forem.com/zeotoni/como-fazer-deploy-de-uma-api-com-json-server-321g</guid>
      <description>&lt;p&gt;Todo dev Front-End iniciante já ficou perdido na hora de fazer deploy de um projeto que dependia de uma fake api com Json-Server. Localmente é uma maravilha. Mas, e na hora de enviar pra um amigo, postar seu projeto no grupo da familia ou portfólio? Bom, nesse artigo, trago duas formas de fazer o deploy da sua api bem rápido e simples.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h4&gt;
  
  
  Sumário
&lt;/h4&gt;

&lt;p&gt;Criando a Database&lt;br&gt;
Configurando o Json-Server&lt;br&gt;
Subindo a aplicação no Github&lt;br&gt;
Deploy no Glitch&lt;br&gt;
Deploy na Vercel&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Criando a Database&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Primeiro vamos criar uma pasta para iniciar nosso projeto. No seu editor de código favorito abra a pasta e crie um arquivo com o nome db.json que será sua database. Nesse arquivo cole ou crie seu arquivo json.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"produtos"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"nome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Óculos de sol"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"preco"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"120,00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"nome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Calça"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"preco"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"60,00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"nome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Boné adidas"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"preco"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"85,00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"nome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Relógio"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"preco"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"350,00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"nome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Jaqueta"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"preco"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"90,00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora nossa pasta está assim e o próximo passo é configurar o json-server.&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%2Fnf2fxmafhe782e0crqle.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%2Fnf2fxmafhe782e0crqle.png" alt="Print da estrutura de arquivos do projeto" width="231" height="255"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Configurando o Json-Server&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Primeiro vamos acessar o terminal e, dentro da pasta do projeto, dar o comando &lt;code&gt;npm init -y&lt;/code&gt; para criarmos o arquivo package.json que terá todas as configurações. Ainda no terminal vamos instalar o Json-Server com o comando &lt;code&gt;npm install json-server&lt;/code&gt;. Após a instalação serão gerados automaticamente um arquivo &lt;code&gt;package-lock.json&lt;/code&gt; e a pasta &lt;code&gt;node_modules&lt;/code&gt;. Para finalizar vamos criar, na raiz do projeto, o arquivo &lt;code&gt;server.js&lt;/code&gt; e adicionar nele as configurações de conexão com o Json-Server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;jsonServer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;json-server&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jsonServer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jsonServer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;router&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;db.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;middlewares&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;jsonServer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;defaults&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;middlewares&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;JSON Server is running&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nos scripts do package.json, vamos adicionar a linha &lt;code&gt;"start": "node server.js"&lt;/code&gt; que contém o comando pra iniciar a aplicação.&lt;/p&gt;

&lt;p&gt;Se você fez tudo correto até aqui, sua pasta deve estar assim: &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%2Fobxzzeq2anzwa3gl7ry4.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%2Fobxzzeq2anzwa3gl7ry4.png" alt="Print da estrutura de arquivos do projeto" width="231" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E assim seu arquivo package.json:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"exemplo-api"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"index.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node server.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Error: no test specified&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; &amp;amp;&amp;amp; exit 1"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"keywords"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"license"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ISC"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"json-server"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^0.17.4"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso queira, você pode editar o nome e adicionar uma descrição. Note que o &lt;code&gt;json-server&lt;/code&gt; já aparece como dependência do projeto e o comando &lt;code&gt;start&lt;/code&gt; já está na lista de scripts.&lt;br&gt;
Para conferir se deu certo, no terminal digite o comando &lt;code&gt;npm start&lt;/code&gt; e, se funcionar, teremos essa mensagem no console:&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%2Fa6c34ny6y56l3nhcbil1.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%2Fa6c34ny6y56l3nhcbil1.png" alt="Print da mensagem do console do projeto" width="298" height="147"&gt;&lt;/a&gt;&lt;br&gt;
Ao acessar o endereço &lt;code&gt;http://localhost:3000&lt;/code&gt; já podemos ver a página de sucesso do json-server. E ao acessar o endpoint &lt;code&gt;http://localhost:3000/produtos&lt;/code&gt; já é possível fazer um CRUD localmente.&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%2Fdplcfbflzxb677vk3a5w.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%2Fdplcfbflzxb677vk3a5w.png" alt="Print do navegador rodando o projeto" width="487" height="568"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  Subindo a aplicação no Github&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Agora vamos criar um repositório no github para o nosso projeto, fazer os commits e subir a aplicação. Mas antes, crie um arquivo &lt;code&gt;.gitignore&lt;/code&gt; e adicione nele a pasta &lt;code&gt;node_modules&lt;/code&gt; pois não é necessessário subir ela. Assim deve ficar o seu repositório.&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%2Fvcioz34po1rlbnwqv6pf.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%2Fvcioz34po1rlbnwqv6pf.png" alt="Print do repositóio do projeto" width="800" height="328"&gt;&lt;/a&gt; &lt;br&gt;
Mais informações &lt;a href="https://www.youtube.com/watch?v=tpIPYktAAhI&amp;amp;t=250s" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;.&lt;/p&gt;


&lt;h3&gt;
  
  
  Deploy no Glitch&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;O &lt;a href="https://glitch.com/" rel="noopener noreferrer"&gt;Glitch&lt;/a&gt; é uma plataforma gratuita para hospedagem de páginas e aplicações web. Você pode acessar criando uma conta com email ou automaticamente com sua conta do github. É bem simples. &lt;br&gt;
Após fazer login, no canto superior direito, clique no botão &lt;code&gt;new project&lt;/code&gt; e, depois no botão &lt;code&gt;import from github&lt;/code&gt;. Cole o link do repositório do projeto na modal que vai abrir e espere o build ficar pronto. É super rápido.&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%2Fs52xmmmin4lkyawymp9b.gif" 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%2Fs52xmmmin4lkyawymp9b.gif" alt="gif ensinando o passo a passo do deploy np glitch" width="600" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ao finalizar o build você verá a tela com todos os arquivos do projeto.&lt;br&gt;
No cabeçalho, clique no botão &lt;code&gt;share&lt;/code&gt; e então teremos acesso à url da nossa aplicação.&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%2F9na3a6nimtdnlwu6zmr5.gif" 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%2F9na3a6nimtdnlwu6zmr5.gif" alt="gif mostrando como pegar a url da imagem" width="600" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pronto. Essa url já pode ser usada nos seus projetos com todas as funcionalidades do &lt;a href="https://github.com/typicode/json-server" rel="noopener noreferrer"&gt;Json-Server&lt;/a&gt;!&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%2Ftheoqjzi5injccpffcro.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%2Ftheoqjzi5injccpffcro.png" alt="Print do resultado de uma requisição get no postman" width="551" height="539"&gt;&lt;/a&gt;&lt;br&gt;
Vale lembrar que, o glitch por ser grátis, demora uns segundos pra responder no primeiro acesso. Mas isso não vai atrapalhar sua aplicação.&lt;/p&gt;


&lt;h3&gt;
  
  
  Deploy na Vercel&lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Assim como o Glitch, a &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; também é uma plataforma muito utilizada para páginas e aplicações web. Se você nunca usou para subir um projeto ou, quer criar uma conta, sugiro esse artigo da &lt;a href="https://dev.to/sucodelarangela"&gt;Angela Caldas&lt;/a&gt; sobre &lt;a href="https://dev.to/sucodelarangela/como-colocar-um-projeto-no-ar-com-vercel-2m9d"&gt;Como colocar um projeto no ar com Vercel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Conta criada, vamos seguir com o deploy da nossa api. Para hospedar na vercel precisamos fazer uma alteração no nosso repositório. Vamos adicionar um novo arquivo na raiz do nosso projeto e commitar pro github. Garanta que o arquivo se chame &lt;code&gt;vercel.json&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"builds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"src"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"server.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"use"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@vercel/node"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"config"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"includeFiles"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"db.json"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"routes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"src"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/(.*)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"dest"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"server.js"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Garanta que o nome do arquivo dentro de &lt;code&gt;"includeFiles"&lt;/code&gt;, seja o mesmo do arquivo de database do projeto. No nosso caso &lt;code&gt;db.json&lt;/code&gt;. E agora nosso repositório está assim: &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%2F758rnhwryt6fnxax1aus.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%2F758rnhwryt6fnxax1aus.png" alt="print do repositório do projeto" width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feito isso, agora já podemos fazer o deploy na Vercel. Primeiro, no canto superior direito vamos clicar no botão &lt;code&gt;Add New&lt;/code&gt; e, depois no link &lt;code&gt;Project&lt;/code&gt;.&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%2Fnie8orl7aiwu5kmsuc1x.gif" 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%2Fnie8orl7aiwu5kmsuc1x.gif" alt="gif da vercel" width="600" height="297"&gt;&lt;/a&gt;&lt;br&gt;
Em seguida, vamos procurar o nosso projeto na lista de respositórios e clicar no botão &lt;code&gt;import&lt;/code&gt;. Na tela de build é possível editar o nome do projeto que vai estar na url da aplicação. Para finalizar vamos clicar no botão &lt;code&gt;deploy&lt;/code&gt;. Agora é só aguardar o build ficar pronto.&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%2Fgc97b7d7tr4xun6s3jkt.gif" 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%2Fgc97b7d7tr4xun6s3jkt.gif" alt="gif do deploy na vercel" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora já temos a url da nossa api. Clique no banner e você será redirecionado para a tela de sucesso do Json-Server. E terá acesso a url da api para usar nos seus projetos com todas as funcionalidades do &lt;a href="https://github.com/typicode/json-server" rel="noopener noreferrer"&gt;Json-Server&lt;/a&gt;! &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%2Fsx5ix5rjxhbfqqd07t69.gif" 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%2Fsx5ix5rjxhbfqqd07t69.gif" alt="Gif do projeto no site da vercel" width="600" height="369"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;Como vimos é bem fácil e rápido hospedar nossas apis de testes e estudos. Aqui eu trouxe duas alternativas simples e que resolvem o problema de quem precisa fazer requisições GET/PUT/POST/DELETE nas suas aplicações. Se você conhece alguma outra forma de hospedar uma aplicação, coloque nos comentários para ajudar a comunidade. &lt;/p&gt;

&lt;p&gt;Grande abraço !!!&lt;/p&gt;

</description>
      <category>json</category>
      <category>mocking</category>
      <category>begginers</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
