WebApp Express Hello World
O clássico ponto inicial de aprendizagem de qualquer linguagem!
A missão de hoje é aprender como criar um simples webserver com NodeJS Express. Abordaremos também os conceitos encontrados neste exemplo. Vamos lá:
Executando o projeto teremos este resultado, um webserver Node.js mais simples do mundo.
Finalmente para confirmar que tudo está funcionando como o esperado basta acessar o caminho http://localhost:3000 em seu navegador ou simplesmente usar o comando curl do Linux.
server.js
Codifique:
var express = require('express') var appexp = express(); appexp.get('/', function(req, res) { res.send('BackEnd NodeJS/Express'); }); appexp.listen(4000); console.log('Servidor rodando na porta 4000');
var express = require('express'), app = express(); app.use(express.logger()); app.get('/', function(req, res){ res.send('Ola Mundo!'); }); var server = app.listen(3000); console.log('Servidor Express iniciado na porta %s', server.address().port);
As 12 linhas de código usadas para criar o primeiro app Express.
Importar módulo
As tarefas mais comuns do servidor são as partes dos módulos. A primeira coisa que temos que fazer em qualquer backend Node é importar/solicitar um módulo que irá nos permitir servir um site.
Importo o módulo Express.js via require() e atribuo a variável express.
Em seguida, defino a criação da webapp appexp como uma instância do servidor. Inicializo o módulo Express.js chamando a função express().
Defino um manipulador response e uma rota utilizando o método HTTP GET, o caminho / (representa a raiz) e a função callback utilizando os objetos req/res que representam a requisição/resposta.
Esta function requer dois parâmetros, ou seja, quando o usuário acessar o servidor ele utiliza a req e enviamos uma res para ele.
Ou seja, executo a função get(), ela aceita 2 parâmetros: o primeiro é o caminho, url. o segundo é a função de callback que será executada após identificado o caminho. Através do método res.send() elaboro uma resposta para o browser.
O HelloWorld chama app.get() que representa o método GET do HTTP, e o caminho / representando nossa página raiz, seguido da função de callback.
Os objetos req/res são objs que o Node oferece, assim podemos chamar res.pipe(), req.on(‘data’, callback) ou outra coisa que quiser fazer SEM o envolvimento do Express.
Rota
Agora eu tenho uma nova instância de webapp, a próxima etapa é definir as rotas. Uma rota consiste em:
- um método HTTP
- um caminho (uma string ou uma regex)
- uma função callback (chamada quando o evento ocorrer)
O Listen
Agora dizemos ao Express.js para escutar na porta. Vinculando o server a uma porta. Ele ficará “escutando” em uma determinada porta(4000).
O método listen do objeto appex irá iniciar o server, vinculado a porta definida.
Listen Parâmetros
A função app.listen() aceita como segundo parâmetro uma função de callback.
var server = app.listen(3000, function () { var host = server.address().address var port = server.address().port })
Neste callback, recupero o endereço de request (url) e a porta utilizada. Com esses dados em mão, posso imprimi-los no console.
var server = app.listen(3000, function () { var host = server.address().address var port = server.address().port console.log('Example app listening at http://%s:%s', host, port) }) var server = app.listen(3000); console.log('Servidor Express iniciado na porta %s', server.address().port);
Em seguida temos que informar o servidor para escutar uma dada porta. Aqui foi chamado o método listen(3000) do nosso objeto app que tenta criar um servidor e vinculá-lo à porta 3000. A porta pode ser qualquer uma que escolher, por exemplo a porta 80 padrão usando listen(80).
Execução
Para executar o servidor via prompt ou outro terminal. Posicione-se na pasta do arquivo server.js e passe o nome do arquivo como parâmetro para o NodeJS:
node server.js
Abra esta URL no browser:
http://localhost:4000
Pronto! Agora temos um webserver Express atendendo na porta 4000. Escrevemos um backend simples utilizando “Express” básico.
Dê um Ctrl+Shift+i e veja o chrome developer em ação:
Considerações
Conclusão
Até aqui é o básico de qualquer programação baseada em Node.JS Express.
Em outro post, vamos agilizar esta etapa utilizando um script executável do Express, o express(1) que gera todo o esqueleto de uma webapp Express.