Menu

NextResponse

NextResponse erweitert die Web Response API um zusätzliche Komfortmethoden.

cookies

Lesen oder verändern des Set-Cookie Headers der Antwort.

set(name, value)

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

get(name)

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

getAll()

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()

delete(name)

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

json()

Erzeugt eine Antwort mit dem angegebenen JSON-Body.

app/api/route.ts
import { NextResponse } from 'next/server'
 
export async function GET(request: Request) {
  return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 })
}
app/api/route.js
import { NextResponse } from 'next/server'
 
export async function GET(request) {
  return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 })
}

redirect()

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)

rewrite()

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

next()

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