DEV Community

Alex Ribeiro
Alex Ribeiro

Posted on • Originally published at Medium on

2

Node.js: Como criar um servidor HTTP

Nessa postagem, irei mostrar a vocês como é simples criar um servidor HTTP, mais conhecido como servidor Web, utilizando Node.js.

Caso tenha alguma dúvida sobre o que é Node.js, dê uma lida em minha postagem onde explico de forma simplificada clicando aqui.

Criando um servidor HTTP

Pressupondo que já tenha o Node.js instalado em sua máquina. Vamos criar um arquivo chamado app.js com a seguinte estrutura:

let http = require('http');
let port = 3000;
let ip = 'localhost';
let server = http.createServer((req, res) => {
console.log('Recebendo uma requisição');
res.end('Retorno da requisição');
});
server.listen(port, ip, () => {
console.log(`Servidor rodando em http://${ip}:${port}`)
console.log('Parar o servidor com: ctrl + c');
});
view raw app.js hosted with ❤ by GitHub

Toda vez que o servidor HTTP recebe uma requisição, a função de callback passada para o método createServer é executada.

O método listen é o responsável pela parametrização de endereço e porta, escutando os mesmos, possibilitando a execução do servidor.

Perfeito. Todos as linhas necessárias para a criação de nosso servidor estão prontas. Agora só precisamos iniciar o servidor.

Pelo terminal, vá até a pasta onde se encontra o arquivo app.js e execute o seguinte comando: node app.js.

A saída no terminal será:

Servidor rodando em http://localhost:3000

Parar o servidor com: ctrl + c

A partir de agora, seu servidor Web está rodando! Se tudo estiver correto, ao acessar http://localhost:3000 pelo navegador e terá o mesmo retorno da linha 7: Retorno da requisição.

Servidor configurado e funcionando! Porém, qualquer caminho vai dar o mesmo retorno. Como iríamos configurar diversas rotas com essa estrutura atual?

Calma, meu caro leitor! Irei lhe mostrar uma forma simples e funcional para isso. Vamos lá!

Trabalhando com rotas

Sabendo como funciona o fluxo de requisições no servidor, podemos adicionar poucas linhas ao nosso código atual para termos um controle de rotas simples e funcional:

let http = require('http');
let port = 3000;
let ip = 'localhost';
let server = http.createServer((req, res) => {
const responses = [];
responses['/'] = 'Inicio';
responses['/sobre'] = 'Sobre';
responses['/naoEncontrado'] = 'Caminho não encontrado';
res.end(responses[req.url] || responses['/naoEncontrado']);
});
server.listen(port, ip, () => {
console.log(`Servidor rodando em http://${ip}:${port}`)
console.log('Parar o servidor com: ctrl + c');
});
view raw app.js hosted with ❤ by GitHub

Pronto, agora temos um controle de rotas funcional. Se cancelar a execução atual do servidor com ctrl+c e rodar novamente o comando node app.js poderá testar as as rotas.

Viu só como é simples?! Com poucas linhas temos uma estrutura capaz de receber requisições e dar um retorno baseado em rotas dinâmicas. Brilhante, não?!

Apesar de funcional, essa estrutura é difícil de se manter. Por diversos motivos a comunidade de JavaScript começou a criar frameworks (novidade?!) para cuidar das rotas.

A partir deste ponto, podemos construir diversas outras formas de organização e tratamento dos retornos. Deixo essa tarefa com vocês.

Obrigado e até mais!

Se gostou do meu texto, me acompanhe que em breve estarei trazendo novidades.

Quer saber mais sobre o assunto ou tem alguma dúvida? Deixe um comentário. Ah, estou aberto a críticas também.

Abraço!


Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more