Sobes.tech
Junior

Selgitage, miks on olemas päringu keha (body), päised (headers) ja päringu parameetrid (query parameters), ning miks neid ei saa ühendada ühte.

sobes.tech AI

Vastus AI-lt

Päringu keha (body), päised (headers) ja päringu parameetrid (query parameters) eksisteerivad selleks, et eraldada erinevat tüüpi teavet, mida edastatakse HTTP-päringus, ning neid ei saa ühendada, kuna nad täidavad erinevaid funktsioone ja on mõeldud erinevateks otstarveteks.

Päringu parameetrid (Query Parameters)

  • Edastatakse URL-is pärast märki ?.
  • Kasutatakse andmete filtreerimiseks, sorteerimiseks, lehekülje jagamiseks või väikese koguse mitte-konfidentsiaalse teabe edastamiseks, mis on vajalik operatsiooni teostamiseks.
  • Tavaliselt kasutatakse GET-päringutega, kuna neil ei ole keha.
  • Nähtavad URL-is, seega ei sobi konfidentsiaalsete andmete edastamiseks.
  • Piiratud URL-i pikkusega.

Näide: GET /users?pageSize=10&page=2&sort=name

Päised (Headers)

  • Edastavad meta-informatsiooni päringu ja vastuse kohta.
  • Sisaldavad andmeid nagu sisu tüüp, kodeering, autentimis- tokenid, kliendi info (User-Agent), vahemälu ja muud.
  • Kasutatakse päringu/vastuse käitumise juhtimiseks, mitte operatsiooni andmete edastamiseks.

Näited päistest: Content-Type: application/json Authorization: Bearer <token> User-Agent: Mozilla/5.0 (...)

Päringu keha (Body)

  • Sisaldab põhiteavet, mis edastatakse serverile töötlemiseks.
  • Kasutatakse päringutega, mis muudavad serveri olekut (POST, PUT, PATCH) või saadavad suuremahulisi andmeid.
  • Tüüpilised formaadid: JSON, XML, vormid (urlencoded/multipart).
  • Ei ole suuruse piirangut (praktilistes piirides).
  • Ei näidata URL-is.

Näide päringu kehas (POST-päring):

{
  "name": "John Doe",
  "email": "john.doe@example.com"
}

Miks neid ei saa ühendada:

  • Semantika: Iga osa kannab oma semantilise koormuse. Parameetrid määravad mida küsida (filtrid), päised määravad kuidas küsida (metadatas), ning keha edastab andmed töötlemiseks.
  • HTTP protokoll: HTTP struktuur eristab selgelt neid komponente, võimaldades klient- ja serverirakendustel neid õigesti analüüsida ja töödelda.
  • Tõhusus ja vahemälu: Eraldamine võimaldab HTTP-infrastruktuuril (proksid, vahemälud jms) tõhusalt töödelda päringuid, näiteks vahemällu salvestada vastuseid samade URL-parameetritega GET-päringutele.
  • Turvalisus: Konfidentsiaalsete andmete edastamine URL-is (parameetrites) ei ole turvaline, kuna need võivad jäädvustada logidesse või brauseri ajaloosse. Selleks kasutatakse keha.
  • Piirangud: Päringu parameetritel on piirang URL-i pikkusele, mis muudab need sobimatuks suurema andmemahtude edastamiseks. Keha sellist piirangut ei oma.

Nende elementide ühendamine ühte viiks struktuuri kaotsimineku, keerulisema parsingu ja töötlemise ning turvalisuse ja tõhususe ohtudeni.