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.

code/api/index.js CHANGED
@@ -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!

results matching ""

    No results matching ""