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')
})

Referências