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.