Junior
Können wir Abfrageparameter (query) anstelle des Anfragekörpers (body) verwenden?
sobes.tech KI
Antwort von AI
Ja, aber es hängt von der Art der Anfrage und den übertragenen Informationen ab.
Anfrageparameter (Query Parameters)
- Werden in der URL nach dem
?als Schlüssel=Wert-Paare übertragen, getrennt durch&. - Werden häufig bei GET-Anfragen verwendet, um Daten zu filtern, zu sortieren und zu paginieren (z.B.:
/api/items?category=electronics&sort=price). - Sind in den meisten Browsern und Servern in der Größe begrenzt.
- Sind in den Server-Logs und im Browser-Verlauf sichtbar (potenzielles Sicherheitsrisiko für sensible Daten).
- Lassen sich leicht zwischenspeichern.
Anfragekörper (Request Body)
- Wird im HTTP-Anfragekörper übertragen.
- Wird häufig bei POST-, PUT- und PATCH-Anfragen verwendet, um große Datenmengen zu übertragen, Ressourcen zu erstellen oder zu aktualisieren (z.B.: Formularübermittlung, JSON-Objekt).
- Hat keine strengen Größenbeschränkungen (im Rahmen der Serverkonfigurationen).
- Ist in der URL nicht sichtbar, was es für die Übertragung sensibler Daten geeigneter macht.
- Wird standardmäßig von Browsern nicht zwischengespeichert.
- Kann verschiedene Datentypen enthalten (JSON, XML, Formulare).
Vergleichstabelle der Unterschiede:
| Kriterium | Anfrageparameter (Query Parameters) | Anfragekörper (Request Body) |
|---|---|---|
| Platzierung | URL (nach ?) |
HTTP-Anfragekörper |
| Typische Methoden | GET | POST, PUT, PATCH |
| Verwendung | Filtern, Sortieren, Paginieren | Erstellen/Aktualisieren von Ressourcen, Übertragung großer Datenmengen |
| Größe | Begrenzung | Praktisch unbegrenzt |
| Sichtbarkeit | Sichtbar in der URL | Nicht sichtbar in der URL |
| Caching | Leicht zwischenspeicherbar | Nicht zwischenspeicherbar (standardmäßig) |
| Sicherheit | Weniger geeignet für sensible Daten | Besser geeignet für sensible Daten |
Wann was verwenden:
- Query Parameters anstelle von Body: Theoretisch möglich bei POST-, PUT- und anderen Methoden, aber nicht empfohlen für die Übertragung des Hauptinhalts der Anfrage. Dies kann die Semantik der HTTP-Methoden verletzen und die Verarbeitung erschweren. Wird sehr selten verwendet, hauptsächlich in sehr einfachen Fällen oder speziellen Architekturen. Das Übertragen großer oder strukturierter Daten in der Query-Zeile ist nicht ratsam.
- Body anstelle von Query Parameters: Für GET-Anfragen ist dies nicht möglich, da der HTTP-Standard keine Semantik für den Body bei GET definiert. Für andere Methoden (POST, PUT usw.) ist der Body die Standardmethode zur Datenübertragung und vorzuziehen, wenn strukturierte oder große Daten übertragen werden sollen oder wenn die Daten sensibel sind.
In den meisten Fällen sollte man den bewährten Konventionen folgen: Query-Parameter für GET zum Filtern/Identifizieren und Body zum Senden von Daten bei anwendungsändernden Anfragen (POST, PUT, PATCH).