Aktivitāte - Cilvēku API

Atjaunots: 2026-10-20

Interaktīva nodarbības aktivitāte un lomu spēle, lai uzskatāmi izprastu klienta un servera mijiedarbību, HTTP pieprasījumu un atbilžu ciklu, statusa kodus un API drošību reālajā dzīvē.

Saturs

Uzdevuma apraksts

Šīs aktivitātes mērķis ir izspēlēt pilnu datu apmaiņas ciklu starp Klientu un Serveri bez datoru starpniecības. Skolēni uzņemas konkrētas datortīkla un sistēmas lomas, izmantojot fiziskas kartītes HTTP pieprasījumu un atbilžu pārsūtīšanai.

Lomu sadalījums:

  1. Klients (Pārlūks / Mobilā lietotne) (1–3 skolēni): Izveido pieprasījumu kartītes (GET, POST) un izsauc API galapunktus.
  2. Tīkls / Maršrutētājs (DNS & Router) (1–2 skolēni): Fiziski pārvieto kartītes starp Klientu un Serveri.
  3. API Serveris (Express.js / Node.js) (2–3 skolēni): Pārbauda pieprasījuma parametrus, API atslēgu, pieprasa datus un izveido atbildes kartīti.
  4. Datubāze (SQLite / DB) (1–2 skolēni): Glabā un atrod pieprasītos datus, vai pieraksta jaunus datus.

Paredzamais izpildes laiks: 45 min.

Darba gaita

1. Posms - Ievads un lomu sadale

  1. Skolotājs izskaidro simulācijas noteikumus un izsniedz lomu plāksnītes.
  2. Datoru darba vietas tiek sadalītas telpā: Klienta galds vienā pusē, API Serveris un Datubāze otrā pusē.
  3. Uz tāfeles tiek definēts "API Līgums" (pieejamie galapunkti):
    • GET /api/skoleni — atgriež visu skolēnu sarakstu;
    • GET /api/skoleni?id=1 — atgriež konkrētu skolēnu;
    • POST /api/skoleni — pievieno jaunu skolēnu (BODY nepieciešams vards).

2. Posms - Pamata pieprasījumi

  1. Veiksmīgs GET pieprasījums (200 OK):
    • Klients uzraksta sarkano kartīti: GET /api/skoleni un atdod Tīklam.
    • Tīkls nogādā kartīti API Serverim.
    • API Serveris pieprasa datus Datubāzei, saņem sarakstu un uzraksta zaļo atbildes kartīti ar statusu 200 OK un JSON saturu.
    • Tīkls aiznes atbildi Klientam, kurš to "attēlo ekrānā" (nolasa skaļi).
  2. Veiksmīgs POST pieprasījums (201 Created):
    • Klients izveido pieprasījumu POST /api/skoleni ar ķermeni BODY: { "vards": "Anna" }.
    • API Serveris pārbauda datus, liek Datubāzei ierakstīt jauno rindiņu un atgriež STATUS: 201 Created.

3. Posms - Kļūdu apstrāde un drošība

  1. Neesošs maršruts (404 Not Found):
    • Klients nosūta pieprasījumu uz neesošu galapunktu GET /api/skolotaji.
    • API Serveris, pat nevēršoties pie Datubāzes, uzreiz atgriež atbildi STATUS: 404 Not Found ar kļūdas paziņojumu JSON formātā.
  2. Neautorizēta piekļuve (401 Unauthorized):
    • Skolotājs ievieš noteikumu: visiem pieprasījumiem nepieciešama galvene x-api-key: parole123.
    • Klients nosūta pieprasījumu bez šīs galvenes.
    • API Serveris noraida pieprasījumu un atgriež STATUS: 401 Unauthorized.

4. Posms - Refleksija un kopsavilkums

Skolotājs vada īsu diskusiju, atskatoties uz nodarbībā izspēlēto:

  • Kāpēc Klients nedrīkst tieši piekļūt Datubāzei, bet tam obligāti nepieciešams API Serveris?
  • Kas notiktu, ja Tīkls pazaudētu kartīti (tīkla kļūda / timeout)?
  • Kāpēc svarīgi sūtīt precīzus HTTP statusa kodus (200, 401, 404), nevis vienmēr tikai 200 OK?

Nepieciešamie resursi

  • Indeksu kartītes vai A4 lapas (sarkanā krāsā pieprasījumiem, zaļā krāsā atbildēm).
  • Marķieri un pildspalvas.
  • Galda plāksnītes ar lomu nosaukumiem (KLIENTS, TĪKLS, API SERVERIS, DATUBĀZE).

Nepieciešamās zināšanas

Var izmantot API Zināšanu krātuvi, īpaši sadaļas par REST API, GET/POST metodēm, JSON datu struktūru un statusa kodiem.

Ieteikumi

  • Kustība telpā: Ļaut "Tīkla" lomas izpildītājiem aktīvi pārvietoties starp galdiem — tas rada dinamiku un uzskatāmi parāda tīkla aizturi (latency).
  • Vizualizācija: Tāfeles vidū fiksēt katra pieprasījuma statusu un maršrutu, lai visa klase var sekot līdzi datu plūsmai.
  • Sarežģītības pakāpe: Ja grupa ātri tiek galā ar uzdevumu, var ieviest "Tīkla hakera" lomu, kas mēģina pārtvert un mainīt datu saturu, demonstrējot nepieciešamību pēc šifrēšanas un drošības.

Programmēšana II SR

Aktivitāte vērsta uz šādām Programmēšana II sasniedzamajiem rezultātiem (SR):

  • Zināšanas: Skaidro API pielietojumu, nepieciešamību un klienta-servera mijiedarbības principus.
  • Prasmes: Identificē HTTP pieprasījuma sastāvdaļas (metode, maršruts/endpoint, galvenes/headers, ķermenis/body) un atbildes statusa kodus.
  • Caurviju prasmes: Sadarbība, sistēmiskā domāšana un problēmrisināšana.

Paraugdatnes un kartītes

HTTP Pieprasījums (Request)

METHOD: GET
URL: /api/skoleni?id=1
HEADERS: {
  "x-api-key": "parole123"
}
BODY: -

HTTP Atbilde (Response)

STATUS: 200 OK
HEADERS: {
  "Content-Type": "application/json"
}
BODY: {
  "id": 1,
  "vards": "Jānis",
  "klase": "11.a"
}
Autors
Mārtiņš Bērziņš avatar
Mārtiņš Bērziņš

Uzraksti atsauksmi uz [email protected] [email protected]