,

Understanding Nextjs Middleware: A Comprehensive Guide

Posted by



Next.js is a popular React framework that provides server-side rendering and has gained a lot of attention in recent years. One of the key features of Next.js is its middleware support, which allows developers to add custom logic to the request handling process.

Middleware in Next.js can be used to perform a variety of tasks, such as authentication, logging, and error handling. This article will explore how to use middleware in Next.js and demonstrate some common use cases.

To get started with middleware in Next.js, you first need to create a custom server using the `createServer` function from the `http` module. This allows you to define your own request handler and apply middleware to it.

“`html

// server.js

const { createServer } = require('http');
const next = require('next');
const middleware = require('./middleware');

const dev = process.env.NODE_ENV !== 'production';
const app = next({ dev });
const handle = app.getRequestHandler();

app.prepare().then(() => {
createServer((req, res) => {
middleware(req, res);
handle(req, res);
}).listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
});

“`

In the example above, we import a custom middleware function from a file called `middleware.js` and apply it to the request handling process before passing the request to Next.js’s built-in request handler.

“`html

// middleware.js

function middleware(req, res) {
// Perform some custom logic here
console.log('Middleware executed');

// Continue with the request handling process
}

module.exports = middleware;

“`

The `middleware` function can perform any custom logic you need, such as checking for authentication or logging the request details. You can also use third-party middleware libraries, such as `express` or `koa`, by integrating them into your custom server.

Middleware in Next.js can also be used to handle error scenarios. For example, you can create a middleware function to catch and handle any errors that occur during the request handling process.

“`html

// middleware.js

function middleware(req, res) {
try {
// Perform some custom logic here
console.log('Middleware executed');

// Continue with the request handling process
} catch (error) {
console.error('An error occurred:', error);
res.statusCode = 500;
res.end('Internal Server Error');
}
}

module.exports = middleware;

“`

In this example, the `middleware` function wraps the request handling process in a `try-catch` block to catch any errors that occur. If an error is caught, the middleware sets the response status code to 500 (Internal Server Error) and ends the response with an error message.

In conclusion, middleware in Next.js provides a flexible way to add custom logic to the request handling process. Whether you need to perform authentication, logging, error handling, or other tasks, middleware allows you to extend Next.js’s functionality to meet your specific requirements. By creating a custom server and applying middleware to it, you can take advantage of the power and flexibility that Next.js has to offer.

0 0 votes
Article Rating
20 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
fabio petry
1 year ago

Boa tarde, estou com um problema, eu criei esse middleware import { NextRequest, NextResponse } from "next/server";

export function middleware(req : NextRequest){

console.log(`————————— MIDDLEWARE ———–${req.nextUrl.pathname}—————`);

return NextResponse.next();

}

export const config = {

matcher: [

'/', '/dashboard'

]

}; a principio super simples, no entanto ele fica em um looping, por que?

fabio petry
1 year ago

E sobre os páginas que hoje colocam um dialog para confirmação de cookies? qual é o limite para eu conseguir inserir informações nos cookies sem precisar desse dialog?

Gustavo Quilante
1 year ago

cara que video perfeito, me ajudou pra caramba
parabens pelo conteudo

belinznX
1 year ago

teria como eu pegar o id por exemplo em parametro de url? para retornar um dado mais preciso ao cliente, tentei com request.query e params, mas nao obtive resultado

Pedro Henrique
1 year ago

Gostei bastante do vídeo, mas tenho uma dúvida. Em relação a verificação de um token jwt, eu testando, o next não tá permitindo com que eu importe o jwt dentro do middleware. Me certifiquei que estou no root do projeto e ele me da o seguinte erro: JWT must be provided. Gostaria apenas de verificar se é um token válido com a minha chave privada.

Henrique K
1 year ago

Neste middleware que verificamos se o usuário está autenticado e caso não, redirecionamos para o /login?

Henrique K
1 year ago

Aí seria um bom lugar para setar o token jwt do usuário dos headers das requisições dele?

Lucas Santana
1 year ago

Muito bom canal!

Marco Aurélio Guimarães
1 year ago

se tiver varios middleware, ai tem q ficar todos ai dentro desse arquivo middleware.js ? Por exemplo, um comportamento diferente do middleware para /auth e /dashboard?

erosMariano
1 year ago

Excelente conteúdo sobre Next 13.4 DeveloperDeck101, to zerando a playlist, vamos que vamos!

Juan Macário
1 year ago

@DeveloperDeck101 brabo

Roberto Flávio Malheiros Barros
1 year ago

Que trabalho fantástico , sensacional, direto ao ponto!!!
Vamos incentivar de todas as maneiras possíveis, galera.🤗

Edson Santos
1 year ago

muito bom muito completo

Bruno Jacby
1 year ago

show!

Ricardo Almeida
1 year ago

@DeveloperDeck101 Muito bom!!!

David Goulart
1 year ago

@DeveloperDeck101 #nextjs13 #nextjs eu vou investir na minha carreira de dev hoje

Joel Luis
1 year ago

@DeveloperDeck101

Brendon Machado
1 year ago

Boa. Gostaria de pergunta o seguinte: Com o middleware eu conseguiria entender se o usuário está acessando via mobile por exemplo, e passar no redirect algum parâmetro via url a fim de informar para minha pagina se deve ou não renderizar certo componente?

Ramon LimmA
1 year ago

Esse Canal Master Class dá show…