Junior
Használhatjuk a kérdési paramétereket (query) a kérés testje (body) helyett?
sobes.tech MI
Válasz az MI-től
Igen, de ez a kérés típusától és az átadott információtól függ.
Kérési paraméterek (Query Parameters)
- A URL-ben a
?jel után kerülnek átadásra kulcs=érték párok formájában,&-vel elválasztva. - Gyakran használják GET-kérésekhez az adatok szűrésére, rendezésére, lapozására (például:
/api/items?category=electronics&sort=price). - A legtöbb böngésző és szerver korlátozza a méretet.
- Láthatóak a szerver naplóiban és a böngésző előzményeiben (biztonsági kockázat érzékeny adatok esetén).
- Könnyen cache-elhetőek.
Kérés törzse (Request Body)
- Az HTTP-kérés törzsében kerül átadásra.
- Gyakran használják POST, PUT, PATCH kérésekhez nagyobb adatmennyiség küldésére, erőforrások létrehozására vagy frissítésére (például: űrlap küldése, JSON-objektum).
- Nincs szigorú méretkorlát (szerver konfigurációtól függően).
- Nem láthatóak a URL-ben, így alkalmasabb érzékeny adatok küldésére.
- Alapértelmezés szerint nem cache-elődnek a böngészők.
- Különböző adat típusokat tartalmazhatnak (JSON, XML, űrlapok).
Összehasonlító táblázat:
| Kritérium | Kérési paraméterek (Query Parameters) | Kérés törzse (Request Body) |
|---|---|---|
| Hely | URL (a ? után) |
HTTP kérés törzse |
| Tipikus módszerek | GET | POST, PUT, PATCH |
| Használat | Szűrés, rendezés, lapozás | Erőforrások létrehozása/frissítése, nagy adatmennyiség küldése |
| Méret | Korlátozott | Szinte korlátlan |
| Láthatóság | Látható URL-ben | Nem látható URL-ben |
| Cache-elés | Könnyen cache-elhetőek | Alapértelmezés szerint nem cache-elődnek |
| Biztonság | Kevésbé alkalmas érzékeny adatokhoz | Jobban alkalmas érzékeny adatokhoz |
Mikor használjunk egyiket a másik helyett:
- Query Parameters helyett Body: elméletileg lehetséges POST, PUT stb. módszereknél, de nem ajánlott az alapvető kérés tartalmának átadására. Ez sértheti az HTTP módszerek szemantikai helyességét és bonyolíthatja a feldolgozást. Nagyon ritkán használják, főként egyszerű esetekben vagy speciális architektúrákban. Nagy vagy strukturált adatok query stringen keresztül nem célszerű küldeni.
- Body helyett Query Parameters: nem lehetséges GET-kéréseknél, mivel az HTTP szabvány nem határozza meg a kérés törzsének szemantikáját GET esetén. Más módszerek (POST, PUT stb.) esetén a kérés törzse a szokásos adatátviteli mód, és előnyösebb, ha strukturált vagy nagyobb adatmennyiséget, vagy érzékeny adatokat küldünk.
A legtöbb esetben érdemes követni a bevált konvenciókat: query paramétereket használni GET kérésnél szűréshez/azonosításhoz, és a body-t az adatok küldésére módosító kérésnél (POST, PUT, PATCH).