NextResponse
NextResponse erweitert die Web Response API um zusätzliche Komfortmethoden.
Lesen oder verändern des Set-Cookie
Headers der Antwort.
Setzt einen Cookie mit dem angegebenen Namen und Wert in der Antwort.
// Bei eingehender Anfrage /home
let response = NextResponse . next ()
// Cookie setzen, um Banner auszublenden
response . cookies . set ( ' show-banner ' , ' false ' )
// Antwort wird einen `Set-Cookie:show-banner=false;path=/home` Header haben
return response
Gibt den Wert des Cookies mit dem angegebenen Namen zurück. Wenn der Cookie nicht gefunden wird, wird undefined
zurückgegeben. Bei mehreren Cookies wird der erste zurückgegeben.
// Bei eingehender Anfrage /home
let response = NextResponse . next ()
// { name: 'show-banner', value: 'false', Path: '/home' }
response . cookies . get ( ' show-banner ' )
Gibt die Werte des Cookies mit dem angegebenen Namen zurück. Ohne Namensangabe werden alle Cookies der Antwort zurückgegeben.
// Bei eingehender Anfrage /home
let response = NextResponse . next ()
// [
// { name: 'experiments', value: 'new-pricing-page', Path: '/home' },
// { name: 'experiments', value: 'winter-launch', Path: '/home' },
// ]
response . cookies . getAll ( ' experiments ' )
// Alternativ alle Cookies der Antwort abrufen
response . cookies . getAll ()
Löscht den Cookie mit dem angegebenen Namen aus der Antwort.
// Bei eingehender Anfrage /home
let response = NextResponse . next ()
// Gibt true für gelöscht zurück, false wenn nichts gelöscht wurde
response . cookies . delete ( ' experiments ' )
Erzeugt eine Antwort mit dem angegebenen JSON-Body.
import { NextResponse } from ' next/server '
export async function GET (request : Request ) {
return NextResponse . json ({ error : ' Internal Server Error ' }, { status : 500 })
}
import { NextResponse } from ' next/server '
export async function GET (request) {
return NextResponse . json ({ error : ' Internal Server Error ' }, { status : 500 })
}
Erzeugt eine Antwort, die zu einer URL weiterleitet.
import { NextResponse } from ' next/server '
return NextResponse . redirect ( new URL ( ' /new ' , request .url))
Die URL kann erstellt und angepasst werden, bevor sie in der NextResponse.redirect()
-Methode verwendet wird. Sie können beispielsweise die request.nextUrl
-Eigenschaft verwenden, um die aktuelle URL zu erhalten und dann zu einer anderen URL weiterzuleiten.
import { NextResponse } from ' next/server '
// Bei einer eingehenden Anfrage...
const loginUrl = new URL ( ' /login ' , request .url)
// ?from=/incoming-url zur /login URL hinzufügen
loginUrl . searchParams . set ( ' from ' , request . nextUrl .pathname)
// Und zur neuen URL weiterleiten
return NextResponse . redirect (loginUrl)
Erzeugt eine Antwort, die die angegebene URL umschreibt (proxyt), während die ursprüngliche URL beibehalten wird.
import { NextResponse } from ' next/server '
// Eingehende Anfrage: /about, Browser zeigt /about
// Umgeschriebene Anfrage: /proxy, Browser zeigt /about
return NextResponse . rewrite ( new URL ( ' /proxy ' , request .url))
Die next()
-Methode ist nützlich für Middleware, da sie es Ihnen ermöglicht, vorzeitig zurückzukehren und mit dem Routing fortzufahren.
import { NextResponse } from ' next/server '
return NextResponse . next ()
Sie können auch headers
beim Erzeugen der Antwort weiterleiten:
import { NextResponse } from ' next/server '
// Bei einer eingehenden Anfrage...
const newHeaders = new Headers ( request .headers)
// Neuen Header hinzufügen
newHeaders . set ( ' x-version ' , ' 123 ' )
// Und Antwort mit neuen Headern erzeugen
return NextResponse . next ({
request : {
// Neue Anfrage-Header
headers : newHeaders,
},
})