Aktivitāte - Cilvēku API
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
- Darba gaita
- Nepieciešamie resursi
- Nepieciešamās zināšanas
- Ieteikumi
- Programmēšana II SR
- Paraugdatnes un kartītes
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:
- Klients (Pārlūks / Mobilā lietotne) (1–3 skolēni): Izveido pieprasījumu kartītes (
GET,POST) un izsauc API galapunktus. - Tīkls / Maršrutētājs (DNS & Router) (1–2 skolēni): Fiziski pārvieto kartītes starp Klientu un Serveri.
- 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.
- 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
- Skolotājs izskaidro simulācijas noteikumus un izsniedz lomu plāksnītes.
- Datoru darba vietas tiek sadalītas telpā: Klienta galds vienā pusē, API Serveris un Datubāze otrā pusē.
- 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 (BODYnepieciešamsvards).
2. Posms - Pamata pieprasījumi
- Veiksmīgs GET pieprasījums (
200 OK):- Klients uzraksta sarkano kartīti:
GET /api/skoleniun 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 OKun JSON saturu. - Tīkls aiznes atbildi Klientam, kurš to "attēlo ekrānā" (nolasa skaļi).
- Klients uzraksta sarkano kartīti:
- Veiksmīgs POST pieprasījums (
201 Created):- Klients izveido pieprasījumu
POST /api/skoleniar ķermeniBODY: { "vards": "Anna" }. - API Serveris pārbauda datus, liek Datubāzei ierakstīt jauno rindiņu un atgriež
STATUS: 201 Created.
- Klients izveido pieprasījumu
3. Posms - Kļūdu apstrāde un drošība
- 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 Foundar kļūdas paziņojumu JSON formātā.
- Klients nosūta pieprasījumu uz neesošu galapunktu
- 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.
- Skolotājs ievieš noteikumu: visiem pieprasījumiem nepieciešama galvene
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 tikai200 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ņš
Uzraksti atsauksmi uz [email protected] [email protected]