Junior
Můžeme místo těla požadavku (body) použít parametry dotazu (query)?
sobes.tech AI
Odpověď od AI
Ano, ale záleží to na typu požadavku a předávaných informacích.
Parametry dotazu (Query Parameters)
- Přenášejí se v URL za znakem
?ve formě párů klíč=hodnota oddělených&. - Často se používají u GET požadavků pro filtrování, řazení, stránkování dat (například:
/api/items?category=electronics&sort=price). - Jsou omezeny velikostí ve většině prohlížečů a serverů.
- Jsou viditelné v logách serveru a historii prohlížeče (potenciální bezpečnostní problém pro citlivá data).
- Snadno se cachují.
Tělo požadavku (Request Body)
- Přenáší se v těle HTTP požadavku.
- Často se používá u POST, PUT, PATCH požadavků pro přenos většího objemu dat, tvorbu nebo aktualizaci zdrojů (například: odeslání formuláře, JSON objektu).
- Není přísně omezeno velikostí (v rámci serverových konfigurací).
- Není viditelné v URL, což je vhodnější pro přenos citlivých dat.
- Výchozí není cachováno prohlížeči.
- Může obsahovat různé typy dat (JSON, XML, formuláře).
Přehled rozdílů:
| Kritérium | Parametry dotazu (Query Parameters) | Tělo požadavku (Request Body) |
|---|---|---|
| Umístění | URL (po ?) |
HTTP tělo požadavku |
| Typické metody | GET | POST, PUT, PATCH |
| Použití | Filtrování, řazení, stránkování | Vytváření/aktualizace zdrojů, přenos velkých dat |
| Velikost | Omezeno | Prakticky neomezené |
| Viditelnost | Viditelné v URL | Není viditelné v URL |
| Cacheování | Snadno cacheovatelné | Není cacheováno (výchozí) |
| Bezpečnost | Méně vhodné pro citlivá data | Vhodnější pro citlivá data |
Kdy použít co místo toho:
- Query Parameters místo těla: teoreticky možné u metod POST, PUT atd., ale nedoporučuje se pro přenos hlavního obsahu požadavku. Může narušit sémantiku HTTP metod a ztížit zpracování. Velmi zřídka se používá, hlavně pro velmi jednoduché případy nebo specifické architektury. Přenos velkých nebo strukturovaných dat přes query řetězec není vhodný.
- Tělo místo Query Parameters: není možné u GET požadavků, protože HTTP standard nedefinuje sémantiku těla požadavku pro GET. U jiných metod (POST, PUT atd.) je tělo standardní způsob přenosu dat a je vhodnější, když se přenášejí strukturované nebo velké objemy informací, nebo pokud jsou data citlivá.
Většinou je vhodné dodržovat osvědčené konvence: používat query parametry pro GET s cílem filtrování/identifikace a tělo pro odesílání dat u měnících stav požadavků (POST, PUT, PATCH).