Middleware de Roteamento
O Roteamento do Express nos da uma flexibilidade na definição de rotas. Já definimos uma rota e vimos ela em funcionando. Também já falamos sobre middleware no capítulo "Roteamente de Aplicações".
Agora, vamos logar nossas requisições com o console.log()
adicionando esse middleware ao arquivo index.js
.
@@ -41,6 +41,14 @@ app.get('/', (req, res) => {
|
|
41
41
|
// pegando uma instância do express router
|
42
42
|
const apiRouter = express.Router()
|
43
|
+
// middleware usado por todas as requisições
|
44
|
+
apiRouter.use(function (req, res, next) {
|
45
|
+
console.log('foi feita uma requisição para nossa API!')
|
46
|
+
// vamos adicionar mais coisas aqui mais tarde
|
47
|
+
// é aqui que vamos varificar a autenticação dos usuários
|
48
|
+
next() // garantir que vamos para a próxima rota
|
49
|
+
})
|
50
|
+
|
43
51
|
// roteamento de teste
|
44
52
|
// acesse GET http://localhost:8000/api
|
45
53
|
apiRouter.get('/', (req, res) => {
|
Então, tudo que precisamos fazer para declarar esse middleware é usar o router.use(function())
. A onder que definimos o middleware também é muito importante. Porque ele será executado na ordem que é listado, como vimos antes. Também adicionamos o next()
indicando para aplicação continuar para o próximo middleware e não parar nesse ponto.
Vamos ver como fica esse log quando executamos uma requisição para nossa API:
> node index.js
A mágica acontece na porta 8000
foi feita uma requisição para nossa API!
GET /api 200 5.377 ms - 32
Essa é a resposta que vamos receber quando fizermos um requisição para nossa API:
> http GET http://localhost:8000/api
HTTP/1.1 200 OK
Access-Control-Allow-Headers: X-Requested-With,content-type,Authorization
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Length: 32
Content-Type: application/json; charset=utf-8
Date: Tue, 18 Apr 2017 16:48:58 GMT
ETag: W/"20-SWNkJQXTrrYDpUn/LvOilY/Ibck"
X-Powered-By: Express
{
"message": "essa é nossa api!"
}
Usar middlewares dessa maneira é muito poderoso. Podemos validar todas as requisições e garantir que estão seguras e como como esperamos. Podemos disparar um erro caso algo esteja errado, logar informações adicionais e verificar se o usuário possui um token de autenticação válido. Veremos isso mais adiante!