Signatur
Beschreibung
Request.method enthält die HTTP-Methode, mit der ein Request-Objekt gesendet wird. Die Methode wird beim Erzeugen über die Option method im Konstruktor new Request(url, { method }) festgelegt. Ohne Angabe ist der Wert "GET". Wird ein bestehender Request als erstes Argument übergeben, übernimmt der neue Request dessen Methode, sofern sie nicht ausdrücklich überschrieben wird.
Die Eigenschaft ist schreibgeschützt. Möchtest du die Methode ändern, musst du einen neuen Request anlegen, etwa mit new Request(alterRequest, { method: 'PUT' }). Eine direkte Zuweisung wie request.method = 'POST' wird ohne Fehlermeldung ignoriert (im Strict Mode gibt es einen TypeError).
In der Praxis brauchst du die Eigenschaft vor allem in Service Workern und in Middleware: Im fetch-Ereignis prüfst du mit event.request.method, ob eine Anfrage in den Cache darf. Die Cache API speichert nur GET-Anfragen. Auch Logging, Routing in serverseitigen Fetch-Umgebungen (Node.js, Deno, Cloudflare Workers) und Wrapper um fetch() werten method häufig aus.
Beim Erzeugen wird die Methode normalisiert: Die Standardmethoden DELETE, GET, HEAD, OPTIONS, POST und PUT werden unabhängig von der Schreibweise in Großbuchstaben umgewandelt. Alle anderen Methoden, auch PATCH, bleiben genau so, wie du sie angegeben hast.
Rückgabewert
"GET", "POST", "PUT", "DELETE". Ohne Angabe im Konstruktor ist der Wert "GET".Beispiele
Methode auslesen und Normalisierung beobachten
const standard = new Request('https://api.example.com/users');
const anlegen = new Request('https://api.example.com/users', {
method: 'post',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Anna' })
});
console.log(standard.method); // Standardwert
console.log(anlegen.method); // 'post' wird zu 'POST'
Service Worker: nur GET-Anfragen cachen
// sw.js
self.addEventListener('fetch', (event) => {
const { request } = event;
// POST, PUT, DELETE usw. direkt ans Netz weiterleiten
if (request.method !== 'GET') return;
event.respondWith((async () => {
const cache = await caches.open('v1');
const cached = await cache.match(request);
if (cached) return cached;
const response = await fetch(request);
if (response.ok) await cache.put(request, response.clone());
return response;
})());
});
Methode ändern: neuen Request aus bestehendem ableiten
const original = new Request('https://api.example.com/items/42');
// Zuweisung wird ignoriert, method ist schreibgeschützt
original.method = 'DELETE';
console.log(original.method);
// Richtig: neuen Request mit überschriebener Methode erzeugen
const loeschen = new Request(original, { method: 'DELETE' });
console.log(loeschen.method, loeschen.url);
Fallstrick: PATCH wird nicht normalisiert
const klein = new Request('https://api.example.com/items/1', { method: 'patch' });
const gross = new Request('https://api.example.com/items/1', { method: 'PATCH' });
console.log(klein.method); // bleibt klein geschrieben
console.log(gross.method);
// Verbotene Methoden werfen einen Fehler
try {
new Request('https://example.com', { method: 'TRACE' });
} catch (err) {
console.log(err.name);
}
// Wichtig · Fallstricke
- Groß- und Kleinschreibung: Nur
DELETE,GET,HEAD,OPTIONS,POSTundPUTwerden in Großbuchstaben umgewandelt.'patch'bleibt klein geschrieben, und viele Server und Proxys lehnen das mit405oder400ab. SchreibPATCHdeshalb immer groß. - Verbotene Methoden:
CONNECT,TRACEundTRACKlösen im Konstruktor einenTypeErroraus. Ungültige Methodennamen, z. B. mit Leerzeichen, ebenfalls. - Body bei GET/HEAD: Übergibst du bei
GEToderHEADeinenbody, gibt es einenTypeError. - Modus
no-cors: Erlaubt sind nurGET,HEADundPOST. Andere Methoden führen zu einemTypeError. - CORS: Methoden außer
GET,HEADundPOSTlösen bei Cross-Origin-Anfragen eine Preflight-Anfrage (OPTIONS) aus. Der Server muss sie überAccess-Control-Allow-Methodserlauben. - Cache API:
cache.put()wirft bei Requests, deren Methode nichtGETist, einenTypeError. Prüferequest.methoddeshalb vor dem Cachen. - Kompatibilität: Wird von allen modernen Browsern unterstützt. In Node.js ist
Requestab Version 18 global verfügbar, ebenso in Deno, Bun und Cloudflare Workers.