Pular para o conteúdo
murad.guide

Aplicações Web

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.

Servidor Node local

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/');
});