Lektion 11 — Øvelser
Man lærer grænsen mellem browser og server ved at starte processen selv. Detaljerne, der ikke står på slidesne, står her.
Hvis du ikke nåede forberedelsen, så læs client-server og tre lag, før du skriver serveren. Sekvensdiagrammet er lagt op sent: læs Wikipedia eller se videokapitlet, før I tegner i øvelse 2, hvis notationen ikke sidder.
| Øvelse | Hvornår | Tid |
|---|---|---|
| 1 Skriv serveren | Efter quizzen om request og response | ~40 min |
| 2 Modellér kaldet | Efter øvelse 1 | ~35 min |
Øvelse 1 — Skriv serveren
Mål: En proces svarer JSON på GET /api/patients. Jeres tabel henter
derfra. Et ændret navn ses efter genstart.
Arbejd i gruppens projekt, i en fil der hedder server.js. Tabellen er den,
I allerede har fra lektion 7. Felterne er cpr og navn.
Det skal du lave
- Skriv
server.jsmed en liste af mindst to patienter. GET /api/patientssvarer200ogJSON.stringifyaf listen.- Enhver anden metode eller sti svarer
404og{"error":"not found"}. - Sæt
Access-Control-Allow-Origin: *ogContent-Type: application/json. - Lyt på port 3000. Start med
node server.js. - Åbn
http://localhost:3000/api/patientsog tjek, at du ser JSON. - Skift
fetch-URL'en i tabellen tilhttp://localhost:3000/api/patients. - Ret et navn i listen, genstart processen, og hent tabellen igen.
Tjekliste
-
node -vsvarer, før du skriver filen - Kun
GETog kun stien/api/patientsgiver 200 -
http://localhost:3000/giver 404, ikke en tom liste - Tabellen viser de navne, der står i
server.js - Et nyt navn kræver genstart. Det kommer fra jeres egen proces, ikke fra underviserens server
Øvelsen er i hus når…
du kan stoppe processen, ændre et navn, starte igen og pege på det nye navn i tabellen — og forklare, at listen bor i processen.
Hvis du sidder fast
node server.jsskal køres i den mappe, filen ligger i. En anden port i fejlteksten betyder, at noget allerede lytter på 3000. Stop den proces, eller skift port begge steder.- Tabellen er tom, men browseren på
localhost:3000/api/patientsviser JSON: så er detfetch-URL'en eller CORS-headeren. - Siden på Vercel kan ikke nå din bærbare. Åbn HTML-filen lokalt, mens
node server.jskører.
Hvis du har ekstra tid
Tilføj en tredje patient. Genstart, og se rækken dukke op. Skriv ikke
POST. Det er lektion 13.
Øvelse 2 — Modellér kaldet
Mål: Diagrammet beskriver det kald, I lige har kørt. Papir er fint. Notationen står i forberedelsen: Sequence diagram og videokapitlet fra 1:17:17 til Communications Diagram.
Det skal du lave
- Livlinjer: bruger, browser og server. Tiden går nedad. Databasen er
ikke med.
server.jsspørger den ikke. - Beskeden fra browser til server er
GET /api/patients. Svaret tilbage er200og JSON-listen. En udfyldt pil venter. En stiplet pil er svaret. - Navngiv de tre lag for den handling, ud fra koden: hvad brugeren ser,
hvilken beslutning
if'et iserver.jstager, og hvor listen bor. - Skriv hvor det kører. HTML-filen er åbnet lokalt. Node kører på den bærbare. Vercel-URL'en kan ikke lave det kald.
- Er klienten tynd eller tyk efter ændringen, og hvorfor? Begrund det med, hvor logikken sidder.
Tjekliste
- Tiden går nedad
- Sti og statuskode er dem, I kan se i browseren
- Præsentation, applikation og data er navngivet for det kald
- Listen er placeret i jeres server-proces, ikke hos underviserens server
- I kan sige, hvorfor siden på Vercel ikke kan hente listen
- Tynd eller tyk er begrundet i, hvor logikken sidder
- Diagrammet handler om jeres kald, ikke om journal-eksemplet
Øvelsen er i hus når…
en anden i gruppen kan læse diagrammet og sige, hvilket request browseren sender, hvad processen svarer, og hvorfor Vercel ikke er med i kaldet.
Hvis du sidder fast
Kig på fanen, der viser http://localhost:3000/api/patients. Det, I ser
der, er svaret. Requestet er den adresse og metoden GET. if'et er
beslutningen. Arrayet er dataene.
Hvis du har ekstra tid
Tegn det samme forløb én gang til, som det ser ud efter lektion 15: serveren spørger databasen, før den svarer browseren. Gem begge. I skal kunne se, hvad der mangler i dag.