O que são o req e res do Express

Introdução

O req e res do Express, são os objetos de requisição e resposta em uma função de middleware do Express.

Um sistema ou uma API com o NodeJS e utilizando o framework Express, tem as rotas que podem ser acessadas.

Essas rotas, contém as funções que farão o processamento dos dados e devolver o resultado para quem fez a solicitação.

Essas funções, são os middlewares do Express, elas recebem uma requisição, processam os dados e devolvem uma resposta.

E o req e res são exatamente isso, o req é o request, o objeto de requisição, que contém todos os dados relacionados a requisição. O res é o response, que é a resposta que será enviada para quem fez a solicitação.

Req (request)

Normalmente é utilizado no middleware, somente a abreviação da palavra request.

Imagine que em uma API, contém uma rota para buscar todos os usuários do sistema, e nessa rota, é possível fazer um filtro pelo nome, como exemplo vamos usar José.

Quem for fazer a requisição para essa API, precisa enviar pelo menos duas informações para a API, que é a rota que ele fará a requisição, por exemplo /usuario, e também o nome que deseja filtrar, que é o José.

A requisição para essa API, deve ser algo desse tipo:

http://localhost:3000/usuarios?nome=Jose

Essa requisição chega até a API, e quem é o responsável por ter os dados da solicitação do usuário, que indica a rota e o nome do usuário a ser buscado, é o req.

O req tem uma série de informações todas relacionadas a requisição, veja aqui uma lista completa de tudo que pode ser recebido em uma requisição.

Nesse caso, o Express, já irá encaminhar a rota, para a função de middleware correta, que trata as requisições de usuário.

E para pegar o nome do usuário que deseja filtrar, para retornar os usuários desejados, na função se utiliza o req.params, para pegar todos os parâmetros da requisição. A função fica dessa forma:

app.get('/usuarios', function (req, res) {
  console.log(req.params.nome); //Jose
});

Nesse caso, o que foi recebido, foi um parâmetro da requisição.

Outro item importante que pode ser acessado pelo req, é o body da request.

Imagine agora que você irá fazer o cadastro de um usuário na API, quando for fazer a requisição, será enviado os dados do usuário, e a API precisa receber esses dados.

Para receber, é utilizado o req.body. É nessa chave que terá todos os dados do usuário que precisa ser salvo no banco de dados.

app.post('/usuarios', function (req, res) {
  console.log(req.body.nome); //Jose
  console.log(req.body.email); //josesilva@email.com
  ...
});

Após receber esses dados da chave body da requisição, é possível fazer tratamentos, manipulações e também inserir os dados no banco.

Res (response)

Normalmente é utilizado no middleware, somente a abreviação da palavra response.

O req tratou todos os dados relacionados a recepção dos dados na API, o response é o responsável pelo contrário, pelos dados e pela forma de saída dos dados da API. É a resposta para quem fez a solicitação.

Assim como o req, ele também tem uma série de dados que podem ser utilizados na resposta, veja a lista completa aqui.

Uma das possibilidades é colocar na resposta, um arquivo de anexo, para que seja enviado ao usuário, junto com os outros dados solicitados:

app.post('/usuarios', function (req, res) {
  console.log(req.body.nome); //Jose
  console.log(req.body.email); //josesilva@email.com
  ...
  res.attachment('path/to/logo.png');
});

Outro item muito utilizado principalmente para o Login de usuários, é adicionar um Cookie na resposta. Normalmente depois de autenticado, é anexado um Cookie com o token que esse usuário terá para continuar fazendo as requests a aplicação:

res
  .status(201)
  .cookie('access_token', 'Bearer ' + token, {
    expires: new Date(Date.now() + 8 * 3600000) // cookie expira em 8 horas
  })
  .cookie('test', 'test')
  .redirect(301, '/admin')

Já utilizando essa mesma função, foi adicionado a função res, o redirect, no caso foi adicionado um cookie a resposta, e após isso foi feito o redirecionamento para uma rota de admin do sistema, que o usuário só pode ver ao estar logado.

Quando o sistema com o Node não é uma API, e ele precisa renderizar as telas, é utilizado no retorno da função o res.render.

O res.render, irá renderizar os arquivos de acordo com o engine de views utilizado no sistema, e ele pode ser utilizado dessa forma:

res.render('index'); //renderiza a view index

//renderiza a tela de usuário, passando o parâmetro nome = Jose
res.render('user', { name: 'Jose' }, function (err, html) {
  // ...
})

Este segundo caso é muito comum, passar dados direto para uma view realizar a renderização dinâmica, e entre outros.

Vídeo

https://youtu.be/ver4YbPYOqg

Conclusão

O req e o res, são os objetos de solicitação e resposta de um sistema ou API que utiliza o framework Express. Eles são essenciais para o controle de fluxo, recebimento de dados, recebimento de outras informações, formas de resposta do sistema e muito mais. Recomendo dar uma olhada em todas as possibilidades que o req e o res disponibilizam. Até o próximo post 🙂

Para ver outros canais onde o posto conteúdo e meu Github, veja os Links do Programando Soluções.

Referências:

https://expressjs.com/pt-br/guide/writing-middleware.html

https://expressjs.com/pt-br/4x/api.html#req

https://expressjs.com/pt-br/4x/api.html#res

Este conteúdo te ajudou de alguma forma?

Usamos cookies para lhe proporcionar a melhor experiência possível no nosso site. Ao continuar a usar este site, você concorda com o uso de cookies.
Ok
Privacy Policy