Sobes.tech
Junior

Kas saame kasutada päringu parameetreid (query) selle asemel, et kasutada päringu keha (body)?

sobes.tech AI

Vastus AI-lt

Jah, kuid see sõltub päringu tüübist ja edastatavatest andmetest.

Päringu parameetrid (Query Parameters)

  • Edastatakse URL-i järel märgi ? kaudu, paari key=väärtus kujul, eraldatud &-ga.
  • Kasutatakse sageli GET-päringutes andmete filtreerimiseks, sorteerimiseks, lehekülje jagamiseks (näiteks: /api/items?category=electronics&sort=price).
  • On suuruse piirangud enamikus brauserites ja serverites.
  • Nähtavad serveri logides ja brauseri ajaloos (potentsiaalne turvarisk tundlike andmete puhul).
  • Kergesti cache-ivad.

Päringu keha (Request Body)

  • Edastatakse HTTP-päringu kehas.
  • Kasutatakse sageli POST, PUT, PATCH-päringutes suurema andmemahu edastamiseks, ressursside loomise või uuendamise jaoks (näiteks: vormi saatmine, JSON-objekt).
  • Piiranguid suuruse osas ei ole (sõltub serveri konfiguratsioonist).
  • Ei ole nähtav URL-is, mis muudab selle sobivamaks tundlike andmete edastamiseks.
  • Enamasti ei cache-ita brauserid.
  • Võib sisaldada erinevat tüüpi andmeid (JSON, XML, vormid).

Võrdlustabel:

Kriteerium Päringu parameetrid (Query Parameters) Päringu keha (Request Body)
Asukoht URL (pärast ?) HTTP päringu keha
Tüüpilised meetodid GET POST, PUT, PATCH
Kasutus Filtreerimine, sorteerimine, lehekülje jagamine Ressursside loomine/uuendamine, suurte andmete edastamine
Suurus Piiratud Praktiliselt piiramatu
Nähtavus URL-is nähtav URL-is nähtamatu
Cache'imine Lihtne cache'ida Ei cache'ita (vaikimisi)
Turvalisus Vähem sobiv tundlike andmete jaoks Rohkem sobiv tundlike andmete jaoks

Millal kasutada üht või teist:

  • Query Parameters asemel Body: teoreetiliselt võimalik POST, PUT ja muude meetodite puhul, kuid ei soovitata põhisisu edastamiseks. See võib rikkuda HTTP meetodite semantikat ja raskendada töötlemist. Väga harva kasutatakse, peamiselt väga lihtsates või spetsiifilistes arhitektuurides. Suurte või struktureeritud andmete edastamine query stringi kaudu ei ole soovitatav.
  • Body asemel Query Parameters: ei ole võimalik GET-päringutes, kuna HTTP standard ei määra keha semantikat GET-i puhul. Muudes meetodites (POST, PUT ja teised) on keha standardne andmeedastusviis ning sobivam, kui edastatakse struktureeritud või suurem maht informatsiooni või kui andmed on tundlikud.

Enamasti on soovitatav järgida tavapäraseid konventsioone: kasutage query parametreid GET-i jaoks filtrimiseks/identifitseerimiseks ja body-d andmete saatmiseks muutvate päringute (POST, PUT, PATCH) puhul.