Päringusõne

**Päringusõne** (inglise keeles *query string*) on osa internetiaadressist, mis määrab etteantud parameetrite väärtused. Päringusõne koosneb tavaliselt domeeninimele lisatavatest väljadest, mille on seadnud kas veebibrauser või mõni muu klientrakendus, näiteks HTML vormi kaudu.

Veebiserver võib HTTP-päringut käsitseda kahel moel. Esimene võimalus on failisüsteemist etteantud aadressi järgi faili lugemine. Teine võimalus on, et kasutatakse domeeniloogikat, mis on antud ressursitüübile omane. Viimasel juhul on päringusõne koos URLi failitee osaga domeeniloogikale töötlemiseks kättesaadav.

## Struktuur
Näide internetiaadressist, mis sisaldab päringusõnet:

`https://www.eesti.ee/et/otsing/?q=haigekassa`

Kui server saab päringu sellisele lehele, käivitatakse programm, millele antakse kaasa päringusõne, milleks on antud juhul `q=haigekassa`. Küsimärk täidab eraldaja rolli ning ei ole osa päringusõnest.

Näide internetiaadressist, kus mitu päringu parameetrit on eraldatud ampersandiga `&`:

`https://www.eesti.ee/portaal/!portaal.otsi_tulemus?sona=haigekassa&t=teenused`

Päringute järjekord ei ole oluline – `sona=haigekassa&t=teenused` ja `t=teenused&sona=haigekassa` annavad mõlemad sama tulemuse. Päringusõnede parsimisel kasutatavad meetodid võivad leheküljeti erineda.

Veebilehel oleval lingil võib olla aadress, mis sisaldab päringusõnet. HTML on defineerinud 3 võimalust, kuidas kasutajaagent saab päringusõnet genereerida:

* HTML-vorm, kasutades `<form>...</form>` elementi,
* serveripoolne kujutiskaart, kasutades `ismap` atribuuti `<img ismap>` konstruktsiooniga `<img>` elemendil,
* indekseeritud otsimine, kasutades nüüdseks vananenud `<isindex>` elementi.

## Internetiaadressi kodeerimine
Mõned sümbolid ei tohi veebilehe aadressis esineda (näiteks tühikud) ning mõnel sümbolil on aadressis eriline tähendus – näiteks `#` viitab dokumendis olevale fragmendile. HTML vormides kasutatakse sümbolit `=` nimede ja väärtuste eraldamiseks. HTML vormid lahendavad probleemi täiendavaid asendusi tehes.

HTML 5 määrab järgmised asendused HTML vormide saatmiseks veebiserveri GET meetodiga. Lühikokkuvõte algoritmist:

* sümbolid, mida ei saa teisendada õigesse tähestikku, asendatakse HTMLi numbriliste karakteriviidetega,
* tühik on kodeeritult `+` või `%20`,
* tähed (`A`-`Z` ja `a`-`z`), numbrid (`0`-`9`) ja sümbolid `*`, `-`, `.` ning `_` jäetakse algsele kujule,
* `+` on kodeeritult `%2B`.

Kõik muud sümbolid esitatakse kuueteistkümnendsüsteemis, kusjuures mitte-ASCII sümbolid kodeeritakse esmalt UTF-8 või muusse etteantud kodeeringusse.

Tilde (`~`) on RFC3986 poolt päringusõnedes lubatud, kuid HTML vormides nõutakse selle kodeerimist kujule `%7E`.

## Näide
Kui HTML dokument sisaldab järgmist vormi:

```html4strict
<form action="cgi-bin/test.cgi" method="get">
  <input type="text" name="esimene" />
  <input type="text" name="teine" />
  <input type="submit" value="Sisesta" />
</form>
```


ning kasutaja sisestab tekstiväljadesse sõned „see on väli“ ning „oli (juba) tühi?“ ja vajutab „Sisesta“ nuppu, saadetakse programmile `test.cgi` (määratud näites elemendi `form` atribuudi `action` poolt) järgnev päringusõne: `esimene=see+on+v%C3%A4li&teine=oli+%28juba%29+t%C3%BChi%3F`.

## Viited