Crie um servidor web HTTP em Node.js com Code Exemplo
โก Resumo Inteligente
O Node.js cria um servidor web funcional em poucas linhas usando o mรณdulo http integrado. O servidor fica escutando em uma porta escolhida e responde a cada requisiรงรฃo com um cรณdigo de status e um corpo, enquanto um cรณdigo separado busca dados de outros sites.

O Node.js O framework รฉ usado principalmente para criar aplicaรงรตes baseadas em servidor. Ele pode ser facilmente utilizado para construir servidores web que fornecem conteรบdo aos usuรกrios.
Vรกrios mรณdulos lidam com solicitaรงรตes relacionadas ao servidor, o mรณdulo integrado http O mรณdulo principal entre eles. Veremos como criar uma aplicaรงรฃo bรกsica de servidor web usando Node.js e, em seguida, como solicitar dados de outro site.
Nรณ como servidor web usando HTTP
Vejamos um exemplo de como criar e executar uma primeira aplicaรงรฃo Node.js.
O aplicativo cria um mรณdulo de servidor simples que escuta na porta 7000. Quando uma requisiรงรฃo รฉ feita atravรฉs do navegador nessa porta, o servidor envia um Olรก Mundo resposta ao cliente.
Code Explicaรงรฃo
- O
requireA funรงรฃo lรช um JavaScript arquivo, executa-o e retorna seu objeto de exportaรงรตes. Aqui ele carrega ohttpmรณdulo para que sua funcionalidade esteja disponรญvel no aplicativo. - Uma aplicaรงรฃo de servidor รฉ criada a partir de uma funรงรฃo simples. Essa funรงรฃo รฉ executada sempre que uma requisiรงรฃo chega ao servidor.
- Quando uma solicitaรงรฃo รฉ recebida, a resposta รฉ enviada com o status de 200Este รฉ o cรณdigo de status padrรฃo em um cabeรงalho HTTP para uma resposta bem-sucedida.
- O prรณprio corpo da resposta รฉ a string Olรก Mundo.
server.listenFaz com que a aplicaรงรฃo fique ร escuta de pedidos do cliente na porta 7000. Qualquer porta disponรญvel pode ser utilizada.
Se o comando for executado com sucesso, a seguinte saรญda aparecerรก no navegador.
saรญda
A partir da saรญda:
- Navegando atรฉ o localhost URL na porta 7000 exibe a string Olรก Mundo na pรกgina.
- Como o cรณdigo especifica a porta 7000, a saรญda sรณ fica visรญvel ao acessar essa porta.
Segue o cรณdigo para referรชncia:
var http = require('http'); var server = http.createServer(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Hello World\n"); }); server.listen(7000);
Tratamento de solicitaรงรตes GET em Node.js
Fazer uma requisiรงรฃo GET para recuperar dados de outro site รฉ simples em Node.js. Historicamente, isso exigia... request Mรณdulo instalado a partir da linha de comando:
npm install request
Esse comando instrui o gerenciador de pacotes do Node a baixar e instalar o mรณdulo necessรกrio. Quando a instalaรงรฃo for concluรญda com sucesso, a linha de comando exibirรก o nome e a versรฃo do mรณdulo instalado no formato <name>@<version>.
Na imagem acima, o request O mรณdulo e seu nรบmero de versรฃo foram baixados e instalados.
Code Explicaรงรฃo
- O
requestO mรณdulo instalado na etapa anterior fornece as funรงรตes necessรกrias para fazer solicitaรงรตes GET a sites. - Uma requisiรงรฃo GET รฉ feita a um site, e uma funรงรฃo de retorno (callback) รฉ executada assim que uma resposta รฉ recebida. A funรงรฃo de retorno recebe trรชs parรขmetros:
- erro โ registra qualquer erro ocorrido durante a realizaรงรฃo da solicitaรงรฃo.
- Automatizadas โ carrega os cabeรงalhos HTTP retornados com a resposta.
- Corpo โ contรฉm todo o conteรบdo da resposta.
- O conteรบdo recebido no
bodyO parรขmetro รฉ escrito no console.
Segue o cรณdigo para referรชncia:
var request = require("request"); request("https://example.com", function(error, response, body) { // Always check the error parameter before using the body if (error) { console.error("Request failed:", error.message); return; } console.log(body); });
โ ๏ธ Aviso de descontinuaรงรฃo: da request mรณdulo era totalmente descontinuado em fevereiro de 2020. e nรฃo recebe mais atualizaรงรตes. Ele ainda instala e executa, entรฃo o exemplo acima continua vรกlido para projetos existentes, mas npm install request Agora imprime um aviso de obsolescรชncia. O novo cรณdigo deve usar a funรงรฃo integrada. fetch funรงรฃo mostrada na prรณxima seรงรฃo.
Como fazer requisiรงรตes HTTP com o fetch nativo no Node.js
O Node incluiu um global fetch funรงรฃo disponรญvel desde a versรฃo 18, compatรญvel com a API jรก fornecida pelos navegadores. Nรฃo requer instalaรงรฃo de pacotes e retorna uma promessa, funcionando diretamente com async/await.
// No require and no npm install needed on Node 18 or later async function getData() { try { const response = await fetch("https://example.com"); // fetch does NOT reject on 404 or 500 โ check ok yourself if (!response.ok) { throw new Error("HTTP status " + response.status); } const body = await response.text(); console.log(body); } catch (err) { // Network failures and the throw above both land here console.error("Request failed:", err.message); } } getData();
Trรชs diferenรงas em relaรงรฃo ao estilo de retorno de chamada merecem destaque. Primeiro, fetch rejeita apenas em caso de falha no nรญvel da rede; um erro HTTP 404 ou 500 ainda รฉ resolvido com sucesso, razรฃo pela qual o response.ok A verificaรงรฃo existe e explica por que omiti-la รฉ o erro mais comum ao migrar de requestEm segundo lugar, o corpo da mensagem nรฃo รฉ entregue com a resposta โ ele deve ser lido explicitamente com... response.text() para texto simples ou response.json() para JSON, e cada um deles retorna uma promessa prรณpria. Terceiro, como toda a chamada รฉ baseada em promessas, uma รบnica try/catch Abrange tanto a requisiรงรฃo quanto a leitura do corpo da mensagem, substituindo completamente o parรขmetro de retorno de chamada que prioriza erros.
Para scripts que precisam ser executados no Node 16 ou anterior, instale node-fetch or axios Em vez disso, jรก que ambos expรตem uma interface comparรกvel baseada em promessas e exigem apenas uma alteraรงรฃo na linha de importaรงรฃo apรณs a atualizaรงรฃo do ambiente de execuรงรฃo.
request vs fetch vs axios: qual usar?
Na maioria dos materiais sobre Node.js, trรชs clientes HTTP aparecem, mas apenas um deles รฉ uma opรงรฃo padrรฃo sensata para novos projetos. Eles diferem em relaรงรฃo ao status de manutenรงรฃo, ร necessidade de dependรชncias e ร forma como cada um sinaliza um erro. Portanto, a tabela abaixo os compara lado a lado.
| Aspecto | solicitar | buscar (embutido) | axios |
|---|---|---|---|
| Status | Obsoleto desde 2020 | Mantido no nรบcleo | Mantido ativamente |
| Instalaรงรฃo | pacote npm | Nenhum no Node 18+ | pacote npm |
| Sessรฃo de Fotos | Callback de erro | Promessa | Promessa |
| Anรกlise JSON | Manual ou opรงรฃo JSON | Manual via response.json() | Automรกtico |
| Rejeiรงรตes com base nos cรณdigos 404 ou 500 | Nรฃo | Nรฃo | Sim |
Uso fetch Para novos projetos em uma versรฃo atual do Node, pois nรฃo adiciona dependรชncias e รฉ compatรญvel com a API do navegador que os desenvolvedores jรก conhecem. Escolha axios Quando o tratamento automรกtico de JSON, interceptadores de requisiรงรฃo ou rejeiรงรฃo em casos de erro economizariam cรณdigo real. Mantenha. request Somente em aplicaรงรตes legadas que jรก dependem dele e planejam substituรญ-lo.
Erros comuns do servidor Node.js e como corrigi-los
A maioria das falhas ao iniciar um servidor Node pela primeira vez decorre de portas, caminhos ou falta de resposta, e nรฃo do prรณprio cรณdigo do servidor.
- USO DE รGUA: Outro processo jรก estรก utilizando a porta. Execute.
netstat -ano | findstr :7000on Windows, oulsof -i :7000on macOS e no Linux, em seguida, interrompa esse processo ou escolha uma porta diferente. - EACCES em uma porta baixa: Portas abaixo de 1024 exigem privilรฉgios elevados. Utilize uma porta acima de 1024 durante o desenvolvimento, como 3000 ou 7000.
- O navegador trava e nรฃo carrega. O atendente nunca ligou.
response.end()A conexรฃo permanece aberta atรฉ que o tempo limite seja atingido, portanto, cada caminho atravรฉs do manipulador deve finalizar a resposta. - Nรฃo foi possรญvel encontrar o mรณdulo 'http': O nome do arquivo estava escrito incorretamente ou o script estรก sendo executado em um navegador em vez do Node.js. Os mรณdulos principais nรฃo precisam de instalaรงรฃo.
- As alteraรงรตes nรฃo aparecem: O Node carrega o arquivo uma รบnica vez na inicializaรงรฃo. Reinicie o processo apรณs cada ediรงรฃo ou execute-o sob um observador, como por exemplo...
node --watch server.js.




