Introdução ao Framework Express

Express é um framework para node.js para a criação de aplicações web. Seu foco está, principalmente, na utilização de rotas para redirecionar cada requisição feita às funções corretas.

Uma mesma requisição pode ser atendida por várias funções, denominadas middlewares, que podem, por exemplo, manipular os dados recebidos via post para que sejam apresentados de maneira mais tratável aos demais middlewares.

Neste post explicarei como instalar o framework, e darei mais detalhes sobre o que são middlewares e como eles funcionam. Por fim, listarei alguns middlewares que considero bastante úteis.

Instalação

Inicialmente, execute o comando

Isso instalará um gerador de projetos próprio do express. A seguir, digite

Isso criará um diretório chamado myapp, com um aplicativo já pré-configurado para utilizar as funcionalidades básicas do express. Além disso, toda a estrutura de diretórios também será criada, incluindo uma pasta pública para seus assets.

Para iniciar seu servidor, digite

Veja que o código básico da sua aplicação fica no arquivo app.js.

Middlewares

Toda conexão feita ao servidor deve ser tratada por um ou mais middlewares, desde uma requisição para obtenção de algum recurso num servidor REST até uma simples requisição para baixar o favicon do site.

Cada middleware deve registrar-se no objeto do tipo express, normalmente denominadoapp, informando quais tipos de requisição deseja tratar. Opcionalmente, o middleware pode escolher receber todas as requisições feitas. Isso é feito através do método app.use (veja a documentação aqui).

A forma mais simples de se utilizar o método use é

Esse trecho de código diz ao objeto app que toda requisição feita a path deve ser tratada pela função middleware. O parâmetro path é opcional, e, se omitido, é assumido como sendo ‘/’, o que fará com que a função middleware seja chamada para atender todas as requisições feitas ao servidor.

Os parâmetros req e res possuem, respectivamente, os dados da requisição feita ao servidor e da resposta que será enviada. next é uma função que diz ao objeto app que outrosmiddlewares devem ser executados para terminar o processamento da requisição.

Vejamos alguns exemplos:

O código acima busca por usuários com id req.params.id, e retorna seus dados no formato JSON. Podemos melhorá-lo para aceitar apenas ids numéricos fazendoapp.use('/users/:id([0-9]{1,})').

No blog, utilizei o código abaixo para liberar acesso á área interna.

app.js

routes/admin.js

O exemplo acima ilustra como podemos dividir as rotas em arquivos diferentes, para melhorar a organização do código. A função router.all diz que todos os tipos de requisição devem ser tratados pelo middleware isLogged.

Se o usuário que estiver tentando acessar o admin estiver logado, a função next é executada, e os demais middlewares podem prover o recurso solicitado. Caso contrário, o usuário é redirecionado para a tela de login.

Os principais middlewares que utilizei no blog foram

  1. body-parser – parser para os dados enviados no corpo da requisição. utilizo este middleware para facilitar o acesso aos dados enviados via POST ou PUT;
  2. less-middleware – Compilador para LESS, esse middleware intercepta todas as requisições feitas a arquivos .css, procura pelos arquivos .less correspondentes e os compila, caso tenham sido alterados desde a última compilação;
  3. express-morgan – gera logs de acessos de todas as requisições http feitas. esses logs podem ser enviados para o console ou para um arquivo de texto qualquer.;
  4. express-session como o nome diz, esse middleware é responsável por tratar as sessões dos usuários. Ele não armazena as sessões por si próprio, mas necessita receber como parâmetro algum objeto capaz de fazer esse armazenamento. Cada middlewareexecutado depois dele possuirá acesso direto à sessão do usuário através do objetoreq.session.

Num post futuro espero explicar com mais detalhes cada um desses middlewares. Até a próxima ;)

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *