Middleware no Node
No Node, middleware é uma peça fundamental da arquitetura de muitas aplicações web. Ele consiste em funções intermediárias que têm acesso tanto ao objeto de requisição (request
) quanto ao objeto de resposta (response
) em uma aplicação HTTP.
Nota
As funções de middlewares podem executar diversas tarefas, como modificar os dados da requisição ou da resposta, autenticar usuários, manipular erros e muito mais.
O middleware age como um intermediário entre o cliente que faz a requisição HTTP e a aplicação que está sendo executada no servidor. Ele pode processar a requisição antes que ela chegue ao seu destino final, bem como processar a resposta antes que ela seja enviada de volta ao cliente.
async function json(request, response) {
const buffers = []
for await (const chunk of request) {
buffers.push(chunk)
}
try {
request.body = JSON.parse(Buffer.concat(buffers).toString())
} catch {
request.body = null
}
response.setHeader('Content-type', 'application/json')
}
export { json }
No código acima, temos um middleware chamado json
. Este middleware é responsável por analisar o corpo da requisição HTTP como JSON. Ele lê os dados da requisição, que podem estar chegando em pedaços (chunks), e os concatena em um Buffer. Em seguida, ele tenta analisar os dados como JSON e os armazena no objeto request.body
. Se ocorrer algum erro na análise do JSON, o request.body
será definido como null
.
const server = http.createServer(async (request, response) => {
const { method, url } = request
await json(request, response)
if (method === 'GET' && url === '/users') {
return response.end(JSON.stringify(users))
}
if (method === 'POST' && url === '/users') {
const { name, email } = request.body
users.push({
id: 1,
name,
email,
})
return response.writeHead(201).end('Criação de usuário')
}
return response.writeHead(404).end('Not found')
})