Sobes.tech
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).