HTTP

HTTP (HyperText Transfer Protocol, hüperteksti edastuse protokoll) loodi 1989 HTML-i (HyperText Markup Language, hüperteksti märgistuskeele) ehk lingitud dokumentide edastamiseks.

Väga kiiresti hakati edastama aga ka muid andmeid, nagu pildid ja muud failid. Praegu pole enam HTTP pelgalt andmete lugemiseks, vaid ka lisamiseks, uuendamiseks ja kustutamiseks.

Märkus

Kui loed seda lehekülge oma brauseris (veebilehitsejas), on ka see lehekülg sinuni toimetatud üle HTTP.

Enne vaatame korraks HTTP traditsioonilist kasutusjuhtu, siis HTTP-d kui API transpordikihti. HTTP API näiteid on toodud allpool.

HTTP & traditsioonilised veebilehed (pigem mitte "API")

Tavaliselt näeb veebilehe kuvamiseks vajalik loogika välja nii (lihtsustatud):

  1. Kasutaja sisestab oma brauserisse (nt Chrome, Firefox, ...) aadressi https://example.com/index.html

  2. Brauser paneb kokku HTTP päringu ja saadab selle välja serverile (nt Apache, nginx, vms tarkvaraga masin), mis asub domeeni example.com taga

  3. Server vaatab, kas tal eksisteerib fail index.html - kui jah, loeb selle faili mälust ja tagastab HTTP vastuses kliendile

  4. Kui fail on HTML-vormingus, joonistab kasutaja brauser vastavalt HTML reeglitele lehekülje välja. Vajadusel tehakse HTTP päringuid veel - näiteks siis, kui lehekülg sisaldab pilti (cat.jpg)

http

HTTP päringu ja HTTP vastuse struktuur

Illustreeritud HTTP päring: http-request

Illustreeritud HTTP vastus: http-response

HTTP & API-d

Veebi API-dest rääkides ei mõelda pigem lihtsalt veebilehtede kuvamist (HTML failide edastamist), vaid struktuursema info edastamist - näiteks JSON või XML vormingus:

{
  "see on": "näide JSON-ist",
  "see tuleneb": [
    "JavaScriptist",
    "täpsemalt",
    "JavaScript Object Notation"
  ],
  "tõeväärtus": true,
  "mõni objekt": {
    "arv": 123
  }
}

Peale lihtsalt info edastamise/lugemise kasutatakse HTTP API-sid kõigi CRUD operatsioonide ehk Create, Read, Update, Delete jaoks.

Tavade järgi:

  • Create - HTTP POST meetod - andmete lisamine

  • Read - HTTP GET meetod - andmete lugemine

  • Update - HTTP PUT meetod - andmete uuendamine

  • Delete - HTTP DELETE meetod - andmete kustutamine

Minimaalne fiktiivne näide kasside API kaudu kassi nr 5 andmete uuendamiseks, HTTP päring:

PUT /cat/5/info HTTP/1.1
Host: myapi.example
Content-Type: application/json

{"name": "Mjäu", "age": 3}

HTTP vastus:

HTTP/1.1 200 OK
Content-Type: application/json

{"id": 5, "name": "Mjäu", "age": 3, "lastUpdated": "2025-01-20T12:34:56Z"}

HTTP API-de näiteid

API-sid kasutatakse igapäevaselt paljudes rakendustes ja teenustes:

  • sotsiaalmeedia - kui jagad pilte Instagramis, kasutatakse API-d selleks, et suhelda pilveteenusega, kus pildid salvestatakse

  • ilmaennustus - ilmarakendused kasutavad API-sid, et tuua reaalajas ilmainfot erinevatest allikatest

  • e-pood - kui ostad midagi veebis, suhtleb e-poe platvorm pangateenustega API kaudu makse töötlemiseks

Suvalisi näiteid Eesti ettevõtete ja asutuste avalikest API-dest:

Pea igal tehnoloogiaettevõttel on arendajatele mõeldud API-d:

Veel näiteid avalikest API-dest, millega katsetada, võib leida näiteks siit: https://github.com/public-apis/public-apis

HTTP tööriistad & HTTP päringute tegemine

Kuidas HTTP päringuid teha? Peale veebibrauseri, käsurea tööriistade nagu curl, API-testimise tööriistade nagu Postman... muidugi Pythoniga!

Järgmises peatükis vaatame lühidalt, kuidas teha HTTP päringuid requests mooduliga.

Veebilehed, mida HTTP kliendi testimiseks proovida:

Muud tööriistad, millega näha HTTP "kõhu sisse":