Capítulo 15
Node: servidor local e rotas
2 min de leitura 404 palavras 1 gravura
Neste capítulo você vai subir um servidor HTTP em Node só em 127.0.0.1. O projeto-fio é o Ateliê Boa Viagem, ateliê digital fictício em Boa Viagem, Recife.
Antes desta etapa
Node.js instalado. Git básico do volume 01.
Seu ponto de partida
Use o exemplo 15-node-servidor do pacote anexo e copie inicio/ para uma pasta de prática fora do original. A raiz do exemplo é a referência completa desta etapa.
Use servidor só em 127.0.0.1 quando o README do exemplo pedir HTTP local. Abrir ou testar não publica nada.
Como praticar
Leia → copie ou digite → mude uma coisa → preveja → salve → recarregue → confira. Restaure cada experiência antes da próxima. Faça as atividades antes de abrir as respostas comentadas.
http.createServer
Node atende pedidos HTTP. Escute apenas 127.0.0.1. Responda texto na rota /.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Ateliê Boa Viagem');
});
server.listen(8780, '127.0.0.1');
Mude uma coisa e preveja
Mude o texto da resposta.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
curl ou navegador mostram o novo texto.
Se não acontecer
Reinicie o processo Node após salvar.

Rotas por URL
Leia req.url e responda /saude com JSON simples.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
if (req.url === '/saude') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ ok: true }));
return;
}
Mude uma coisa e preveja
Acrescente /sobre com nome do Ateliê.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
As duas rotas respondem.
Se não acontecer
Return após cada resposta.
404 consciente
Rotas desconhecidas devolvem 404 com corpo claro.
Faça na sua cópia
Confira o trecho no contexto do exemplo antes de mudar.
res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Não encontrado');
Mude uma coisa e preveja
Teste /xyz.
Anote o que espera observar antes de salvar e recarregar.
Recarregue e confira
Status 404.
Se não acontecer
Confira a ordem dos if.
Atividades
Atividade 1
Por que listen no 127.0.0.1?
Atividade 2
O que Content-Type application/json indica?
Atividade 3
O que fazer após editar o servidor?
Respostas comentadas
Resposta da atividade 1
Não expor o serviço na rede local sem intenção.
Resposta da atividade 2
Corpo em JSON.
Resposta da atividade 3
Reiniciar o processo Node.
O arquivo completo
Referência do exemplo 15-node-servidor, reproduzida aqui para que você possa conferir sem sair da página.
server.js
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/saude') {
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
res.end(JSON.stringify({ ok: true }));
return;
}
if (req.url === '/sobre') {
res.writeHead(200, { 'Content-Type': 'application/json; charset=utf-8' });
res.end(JSON.stringify({ nome: 'Ateliê Boa Viagem' }));
return;
}
if (req.url === '/' || req.url === '') {
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Ateliê Boa Viagem');
return;
}
res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Não encontrado');
});
server.listen(8780, '127.0.0.1', () => {
console.log('http://127.0.0.1:8780/');
});