1
resposta

app.route.post ou app.post(<route>, funcao) - Qual a diferença?

Olá!

Na aula 2, o instrutor introduz o passport.authenticate.

app
    .route('/usuario/login')
    .post(
      passport.authenticate('local', { session: false }),
      usuariosControlador.login
    );

Eu não entendi quais são os parâmetros que o post está recebendo, já que nas aulas anteriores usávamos a sintáxe

app.post(<nome da rota>, (req, res) => {...})

O que efetivamente o post está recebendo do passport.authenticate?

1 resposta

Basicamente, app.route(path).post(callback) é o mesmo que app.post(path, callback)

Ou seja, esse trecho do instrutor tem o mesmo efeito que este:

app.post('/usuario/login',
  passport.authenticate('local', { session: false }),
  usuariosControlador.login
);

O app.route serve pra definir vários handlers num mesmo path sem ter que repetir o path. Mais sobre isso aqui.

No caso, você pode passar mútiplos callback, que é o que acontece com esse .post que o instrutor usou.

O método passport.authenticate retorna uma função de callback (chamada de middleware) que recebe (ao ser invocada pelo Express) os mesmos parâmetros que o teu método usuariosControlador.login