APIMiddlewares

Middleware

Imaginez le middleware comme un policier qui se tient au milieu d’un carrefour très fréquenté. Le policier peut diriger le trafic (les requêtes) vers différents chemins ou modifier leur trajectoire.

Le middleware est exécuté avant même que le contenu mis en cache et les routes ne soient appelé.
Son rôle principal est de diriger ou arrêter le flux des requêtes en fonction des données entrantes.

Convention de Fichier pour le Middleware

Pour utiliser un middleware, créez un fichier nommé middleware.ts à la racine de votre projet, c’est-à-dire au même niveau que app.

Voici un exemple:

// middleware.ts
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
 
export function middleware(request: NextRequest) {
  return NextResponse.redirect(new URL('/home', request.url))
}
 
export const config = {
  matcher: '/about/:path*',
 

Forbidden

Le middleware a la capacité de répondre directement à une requête. Vous pouvez retourner une instance de Response ou de NextResponse. Cela est particulièrement utile si vous avez besoin d’authentifier une requête ou d’effectuer d’autres vérifications avant d’envoyer une réponse.

middleware.ts
import { NextRequest, NextResponse } from 'next/server'
import { isAuthenticated } from '@lib/auth'
 
export const config = {
  matcher: '/api/:function*',
}
 
export function middleware(request: NextRequest) {
  if (!isAuthenticated(request)) {
    return new NextResponse(
      JSON.stringify({ success: false, message: 'authentication failed' }),
      { status: 401, headers: { 'content-type': 'application/json' } }
    )
  }
}