1
resposta

[Dúvida] Eu não entendi como funciona o comando rotas[req.url]

Quando eu vi o comando rotas[req.url], percebi que ele estava pegando a chave e jogando na URL e pegando o valor pra jogar no body da página, mas como isso é possível já que o req.url não tem uma ligação ou uma chamada pra chave e valor dentro de rotas?

1 resposta

A variável rotas é um dicionário, ou seja, você passa um índice para o dicionário em formato de texto (key/chave) e ele te retorna o valor correspondente (value/valor).

Um exemplo rápido, considerando o objeto rotas:

const rotas = {
    '/': 'Curso de Node',
    '/livros': 'Pagina de livros',
    '/autores': 'Lista de autores',
    '/editora': 'Pagina de editora',
    '/sobre': 'Informacoes sobre o projeto'
}

se digitarmos o endereço https://localhost:3000/sobre, a variável req.url nos dá o texto '/sobre'. Ao executar rotas[req.url] nos retorna'Informacoes sobre o projeto', pois estamos acessando a chave /sobre do dicionário.

Você pode adicionar vários console.log ao longo do código pra validar quais valores estão sendo usados, só cuidado pra não poluir demais a saída:

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text-plain' });
    console.log(`URL: ${req.url}`);
    console.log(`rota: ${rotas[req.url]}`);
    res.end(rotas[req.url]);
})

Links úteis: