<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Express - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Aprenda a codificar - de graça. Tutoriais de programação em Python, JavaScript, Linux e muito mais. ]]>
        </description>
        <link>https://www.freecodecamp.org/portuguese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Express - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Mon, 08 Jun 2026 11:18:10 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/tag/express/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Como criar um front-end em React e um back-end em Node/Express e conectá-los ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: João Henrique Neste artigo, examinarei com vocês o processo de criação de uma aplicação simples em React e a conexão dela com uma API simples em Node/Express que também criaremos. Não entrarei em muitos detalhes sobre como trabalhar com qualquer uma das tecnologias que mencionarei neste tutorial, mas ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-criar-um-frontend-em-react-e-um-backend-em-node-express-backend-e-conecta-los/</link>
                <guid isPermaLink="false">624b68676daab205304b00a4</guid>
                
                    <category>
                        <![CDATA[ Express ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Daniel Rosa ]]>
                </dc:creator>
                <pubDate>Tue, 05 Apr 2022 11:58:39 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/04/0_IlQX1QCLarsRIFl7.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/create-a-react-frontend-a-node-express-backend-and-connect-them-together-c5798926047c/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to create a React frontend and a Node/Express backend and connect them</a>
      </p><p>Escrito por: João Henrique</p><p>Neste artigo, examinarei com vocês o processo de criação de uma aplicação simples em React e a conexão dela com uma API simples em Node/Express que também criaremos.</p><p>Não entrarei em muitos detalhes sobre como trabalhar com qualquer uma das tecnologias que mencionarei neste tutorial, mas deixarei links, caso você queira aprender mais.</p><p>Você encontrará o código inteiro <a href="https://github.com/Joao-Henrique/React_Express_App_Medium_Tutorial"></a><a href="https://github.com/Joao-Henrique/React_Express_App_Medium_Tutorial" rel="noopener"><strong>n</strong></a><strong>este repositório</strong> que eu fiz para o tutorial.</p><p>O objetivo aqui é dar a você um guia prático sobre como configurar e conectar o <strong>client de f<strong>ront-end </strong></strong>com a <strong><strong> </strong>API do b<strong>ack-end</strong></strong>.</p><p>Antes de botar a mão na massa, certifique-se de ter o <a href="https://nodejs.org/en/" rel="noopener">Node.js</a> em sua máquina.</p><h4 id="crie-o-diret-rio-principal-do-projeto"><strong><strong>Cr</strong>ie o diretório principal do projeto</strong></h4><p>No seu terminal, navegue até o diretório onde deseja salvar seu projeto. Agora, crie um diretório para seu projeto e entre nele:</p><pre><code class="language-bash">mkdir meu_projeto_incrivel
cd meu_projeto_incrivel</code></pre><h4 id="crie-uma-aplica-o-em-react"><strong><strong>Cr</strong>ie uma aplicação em <strong><a href="https://reactjs.org/" rel="noopener">React</a></strong></strong></h4><p>Este processo é bem direto ao ponto.</p><p>Usarei aqui o <a href="https://github.com/facebook/create-react-app" rel="noopener">create-react-app</a> da Meta para… isso, você adivinhou, criar com facilidade uma aplicação em React chamada <strong><strong>client</strong></strong>:</p><pre><code class="language-bash">npx create-react-app client
cd client
npm start</code></pre><p><em>Vejamos agora o que eu fiz<em>:</em></em></p><ol><li><em><em>Us</em>ei o<em> <a href="https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b" rel="noopener">npx</a> </em>do npm para criar uma aplicação em R<em>eact </em>e dei a ela o nome de<em> client.</em></em></li><li><em>Usei <em>cd</em> <em>(change directory</em>, ou alterar diretório<em>) </em>para entrar no diretório <em>client.</em></em></li><li><em>Iniciei a aplicação<em>.</em></em></li></ol><p>No seu navegador, vá para <a href="http://localhost:3000/" rel="noopener">http://localhost:3000/</a>.</p><p>Se tudo estiver certo, você verá a página de boas-vindas do React. Parabéns! Isso significa que você agora tem uma aplicação básica em <a href="https://reactjs.org/" rel="noopener"><strong><strong>React</strong></strong></a> em execução na sua máquina local. Fácil, não?</p><p>Para interromper sua aplicação em React, basta pressionar <code><strong><strong>Ctrl + c</strong></strong></code> no seu terminal.</p><h4 id="crie-uma-aplica-o-em-express"><strong><strong>Cr</strong>ie uma aplicação em<strong> <a href="https://expressjs.com/" rel="noopener">Express</a></strong></strong></h4><p>Ok, esta parte será direta como o exemplo anterior. Não se esqueça de navegar até a pasta superior do projeto.</p><p>Usarei o <a href="https://expressjs.com/en/starter/generator.html" rel="noopener">Express Application Generator</a> para criar rapidamente o esqueleto de uma aplicação e dar a ela o nome de <strong><strong>api:</strong></strong></p><pre><code class="language-bash">npx express-generator api
cd api
npm install
npm start</code></pre><p><em>Vamos ver o que eu diz<em>:</em></em></p><ol><li><em><em>Us</em>ei o npx do<em> npm</em> para instalar o <em>express-generator global</em>mente<em>.</em></em></li><li><em><em>Use</em>i o<em> express-generator </em>para criar uma aplicação do E<em>xpress </em>e dei a ela o nome de<em> api.</em></em></li><li><em>Usei <em>cd </em>para entrar no diretório<em> API.</em></em></li><li>Instalei todas as dependências.</li><li>Iniciei a aplicação.</li></ol><p>No seu navegador, vá até <a href="http://localhost:3000/" rel="noopener">http://localhost:3000/</a>.</p><p>Se tudo estiver certo, você verá a página de boas-vindas do express. Parabéns! Isso significa que você tem uma aplicação básica em <a href="https://expressjs.com/" rel="noopener"><strong><strong>Express</strong></strong></a> em execução em sua máquina local. Fácil, não?</p><p>Para interromper sua aplicação do Express, basta pressionar <code><strong><strong>Ctrl + c</strong></strong></code> em seu terminal.</p><h4 id="configura-o-de-uma-nova-rota-na-api-do-express"><strong><strong>Configur</strong>ação de uma nova<strong> </strong><a href="https://expressjs.com/en/guide/routing.html"><strong></strong></a><strong><a href="https://expressjs.com/en/guide/routing.html" rel="noopener">ro</a></strong><a href="https://expressjs.com/en/guide/routing.html" rel="noopener">t</a>a<strong> </strong>na API do<strong> Express</strong></strong></h4><p>Certo, hora de botar a mão na massa. É o momento de abrir seu editor de código favorito <em><em>(</em>eu uso o <em><a href="https://code.visualstudio.com/" rel="noopener">VS Code</a>) </em></em>e de navegar até a pasta do seu projeto.</p><p><em>Se você nomeou a <strong>aplicação em R</strong><em><strong><strong>eact </strong></strong></em>como<em><strong><strong> client</strong></strong> </em>e a<em> </em><strong>aplicação do Ex</strong><em><strong><strong>press </strong></strong></em>como<em><strong><strong> api</strong></strong>, </em>você encontrará duas pastas principais<em>: <strong><strong>client</strong></strong> </em>e<em> <strong><strong>api.</strong></strong></em></em></p><ol><li>Dentro do diretório <strong><strong>API</strong></strong>, vá para <strong><strong>bin/www</strong></strong> e altere o número da porta na linha 15 de 3000 para 9000. Executaremos as duas aplicações ao mesmo tempo mais tarde. Fazendo isso, evitaremos problemas. O resultado deverá ser algo assim:</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/04/m7e3LsFolz6988HgYjgdDuP3DPY1Ix3F8u5u.png" class="kg-image" alt="m7e3LsFolz6988HgYjgdDuP3DPY1Ix3F8u5u" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/04/m7e3LsFolz6988HgYjgdDuP3DPY1Ix3F8u5u.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/04/m7e3LsFolz6988HgYjgdDuP3DPY1Ix3F8u5u.png 690w" width="690" height="131" loading="lazy"><figcaption>meu_projeto_incrivel/api/bin/www</figcaption></figure><p>2. Em <strong><strong>api/routes</strong></strong>, crie um arquivo <strong><strong>testAPI.js</strong></strong> e cole nele este código:</p><pre><code class="language-js">var express = require(“express”);
var router = express.Router();

router.get(“/”, function(req, res, next) {
    res.send(“A API está funcionando corretamente”);
});

module.exports = router;</code></pre><p>3. No arquivo <strong><strong>api/app.js</strong></strong>, insira uma nova rota na linha 25:</p><pre><code class="language-js">app.use("/testAPI", testAPIRouter);</code></pre><p>4. Certo, você está “informando” o Express que ele deve usar essa rota. Você, contudo, &nbsp;ainda precisa solicitá-la. Faremos isso na linha 9:</p><pre><code class="language-js">var testAPIRouter = require("./routes/testAPI");</code></pre><p>As únicas alterações são nas linhas 9 e 25. No fim, esta deve ser a aparência:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/04/hG-IcH7kyM8nj1VO43Mgo1nZGI0hsVhvAfFi.png" class="kg-image" alt="hG-IcH7kyM8nj1VO43Mgo1nZGI0hsVhvAfFi" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/04/hG-IcH7kyM8nj1VO43Mgo1nZGI0hsVhvAfFi.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/04/hG-IcH7kyM8nj1VO43Mgo1nZGI0hsVhvAfFi.png 690w" width="690" height="386" loading="lazy"><figcaption>meu_projeto_incrivel/api/app.js</figcaption></figure><p>5. Parabéns! Você criou uma nova <a href="https://expressjs.com/en/guide/routing.html" rel="noopener">rota</a> (texto em inglês).</p><p>Se você iniciar sua aplicação da API (em seu terminal, navegue até o diretório API e execute “<strong><strong>npm start”</strong></strong>) e for até <a href="http://localhost:9000/testAPI" rel="noopener">http://localhost:9000/testAPI</a> em seu navegador, verá a mensagem: <strong><em>A API está funcionando corretamente</em><strong><em><em>.</em></em></strong></strong></p><h4 id="conectando-o-client-em-react-api-do-express"><strong><strong>Con</strong>ectando o c<strong>lient </strong>em React à API do <strong>Express</strong></strong></h4><ol><li>Em seu editor de código, vamos trabalhar no diretório <strong><strong>client</strong></strong>. Abra o arquivo <strong><strong>app.js</strong></strong>, que se encontra em <strong><strong>m</strong>eu_projeto_incrivel<strong>/client/app.js</strong></strong>.</li><li>Aqui, usarei a <strong><strong><a href="https://developer.mozilla.org/pt-BR/docs/Web/API/Fetch_API/Using_Fetch">Fetch API</a> </strong></strong>para obter dados da <strong><strong>API. </strong></strong>Basta colar este código após a declaração da classe e antes do método render:</li></ol><pre><code class="language-jsx">constructor(props) {
    super(props);
    this.state = { apiResponse: "" };
}

callAPI() {
    fetch("http://localhost:9000/testAPI")
        .then(res =&gt; res.text())
        .then(res =&gt; this.setState({ apiResponse: res }));
}

componentWillMount() {
    this.callAPI();
}</code></pre><p>3. Dentro do método render, você encontrará uma tag <code><strong><strong>&lt;</strong></strong>p&gt;</code>. Vamos alterá-la <strong>para que renderize <strong>apiRes</strong>ponse</strong>:</p><pre><code class="language-jsx">&lt;p className="App-intro"&gt;;{this.state.apiResponse}&lt;/p&gt;</code></pre><p>No final, o arquivo terá a seguinte aparência:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/04/dswag4EEuA3vcVmZ9cs7rxJwOayb-SW6HiI8.png" class="kg-image" alt="dswag4EEuA3vcVmZ9cs7rxJwOayb-SW6HiI8" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/04/dswag4EEuA3vcVmZ9cs7rxJwOayb-SW6HiI8.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/04/dswag4EEuA3vcVmZ9cs7rxJwOayb-SW6HiI8.png 690w" width="690" height="596" loading="lazy"></figure><p>É, eu sei!!! Muita informação! O copiar e colar é um bom auxílio, mas você precisa entender o que está fazendo. Vamos ver o que eu fiz aqui:</p><ol><li><em>Nas linhas<em> 6 </em>a<em> 9, </em>inserimos um<em> construtor, </em>que inicializa o state padrão<em>.</em></em></li><li><em>Nas linhas <em>11 </em>a<em> 16, </em>inserimos o método<em> <strong><strong>callAPI()</strong></strong></em><strong>, </strong>que fará o fetch dos dados da <em>API </em>e armazenará a resposta em<em> <strong><strong>this.state.apiResponse.</strong></strong></em></em></li><li><em>Nas linhas<em> 18 </em>a<em> 20, </em>inserimos um método do ciclo de vida do React, chamado<em> <strong><strong>componentDidMount()</strong></strong></em><strong>. </strong>Sua função será <em>execut</em>ar<em> </em>o método<em> <strong><strong>callAPI()</strong></strong> </em>após a montagem do componente<em>.</em></em></li><li>Por fim, na linha 29, usei a tag <code><strong><strong>&lt;</strong></strong>p&gt;</code> para exibir um parágrafo na página do nosso client, com o texto que obtivemos a partir da API.</li></ol><h4 id="mas-o-que-esse-tal-de-cors"><strong>Mas o que é esse tal de<strong> <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" rel="noopener">CORS</a>?</strong></strong></h4><p>Beleza! Estamos quase prontos. Porém, se começarmos as duas aplicações (client e API) e se navegarmos até <a href="http://localhost:3000/" rel="noopener">http://localhost:3000/</a>, você ainda não encontrará o resultado esperado sendo exibido na página. Se abrir as ferramentas de desenvolvimento do Chrome, saberá o motivo. No console, você verá o erro a seguir:</p><blockquote>Failed to load <a href="http://localhost:9000/testAPI" rel="noopener">http://localhost:9000/testAPI</a>: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘<a href="http://localhost:3000'/" rel="noopener">http://localhost:3000'</a> is therefore not allowed access. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.</blockquote><p>Tradução: "Não foi possível carregar <a href="http://localhost:9000/testAPI" rel="noopener">http://localhost:9000/testAPI</a>: O cabeçalho 'Access-Control-Allow-Origin' (algo como 'controle de acesso e permissão da origem') não está presente no recurso solicitado. A origem, '<a href="http://localhost:3000'/" rel="noopener">http://localhost:3000</a>', portanto, não tem o acesso permitido. Se uma resposta 'opaca' serve às suas necessidades, defina o modo da solicitação como 'no-cors' para obter o recurso com o CORS desativado."</p><p>Isso é simples de se resolver. Temos apenas de adicionar o CORS à nossa API para permitir solicitações entre origens. Vamos fazer isso. <a href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP/CORS">Confira este link da MDN</a> para saber mais sobre o <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" rel="noopener"></a><a href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP/CORS">CORS</a>.</p><ol><li>No seu terminal, navegue até o diretório API e instale o pacote <strong><strong>CORS</strong></strong>:</li></ol><pre><code class="language-bash">npm install --save cors</code></pre><p>2. No seu editor de código, vá até o diretório API e abra o arquivo <strong><strong>m</strong>eu<strong>_</strong>projeto<strong>_</strong>incrivel<strong>/api/app.js</strong></strong>.</p><p>3. Na linha 6, solicite o <strong><strong>CORS:</strong></strong></p><pre><code class="language-js">var cors = require("cors");</code></pre><p>4. Agora, na linha 18, “informe” o Express que ele deve usar o <strong><strong>CORS</strong></strong>:</p><pre><code class="language-js">app.use(cors());</code></pre><p>O arquivo da API <strong><strong>app.js</strong></strong> deve terminar assim:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/04/NOuexIhM99Tn-eKYJ0wJjRJUCbIwww8Lyr61.png" class="kg-image" alt="NOuexIhM99Tn-eKYJ0wJjRJUCbIwww8Lyr61" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/04/NOuexIhM99Tn-eKYJ0wJjRJUCbIwww8Lyr61.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/04/NOuexIhM99Tn-eKYJ0wJjRJUCbIwww8Lyr61.png 690w" width="690" height="746" loading="lazy"><figcaption>meu_projeto_incrivel/api/app.js</figcaption></figure><h4 id="-timo-tudo-certo-"><strong>Ótimo<strong>. </strong>Tudo certo<strong>!!</strong></strong></h4><p>Ok! Agora, estamos prontos!</p><p>Agora, inicie as duas aplicações (client e API), em dois terminais diferentes, usando o comando <strong><strong>npm start</strong></strong>.</p><p>Se você navegar até o endereço <a href="http://localhost:3000/" rel="noopener">http://localhost:3000/</a>, verá no navegador algo assim:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/04/Fwq4HE7hMM2Z5Um3U9xuwCVzlZSAeSvr9U1c-1.png" class="kg-image" alt="Fwq4HE7hMM2Z5Um3U9xuwCVzlZSAeSvr9U1c-1" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/04/Fwq4HE7hMM2Z5Um3U9xuwCVzlZSAeSvr9U1c-1.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/04/Fwq4HE7hMM2Z5Um3U9xuwCVzlZSAeSvr9U1c-1.png 800w" sizes="(min-width: 720px) 720px" width="800" height="257" loading="lazy"><figcaption>No texto de baixo, teremos "<strong><em>A API está funcionando corretamente</em></strong>"</figcaption></figure><p>Claro que este projeto, por si só, não faz muita coisa, mas é o início de uma aplicação Full Stack. Você pode encontrar o código completo <a href="https://github.com/Joao-Henrique/React_Express_App_Medium_Tutorial"></a><a href="https://github.com/Joao-Henrique/React_Express_App_Medium_Tutorial" rel="noopener"><strong>n</strong></a><strong>este repositório</strong> que eu criei para o tutorial.</p><p>Em breve, farei alguns tutoriais complementares, como, por exemplo, como conectar com um banco de dados do MongoDB e como executá-lo dentro de contêineres do Docker.</p><p>Como diria um bom amigo:</p><blockquote>Seja forte e siga programando!!!</blockquote><p>…e não se esqueça de ser incrível hoje ;)</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
