Skrivehandlinger
Referanseinformasjon om skrivehandlinger
Introduksjon
Se komme i gang med skrivehandlinger for en introduksjon.
Nedenfor er begrepene som brukes på denne siden.
- Sluttbrukersystem (SBS)
- SBS brukes for å beskrive systemet sluttbrukeren benytter, vanligvis klientsiden av en nettleserapplikasjon som kjører JavaScript- eller WebAssembly-kode.
- Innholdsleverandørs system (ILS)
- Innholdsleverandørsystemet er systemet som svarer på endepunktene, altså URL-ene som FCE-en refererer til. Dette er vanligvis tjenesteleverandørplattformen, som Altinn 3.
Utføring av forespørsler
Skrivehandlinger MÅ implementeres i SBS-et med en HTTP-klient som sender dialogtoken som autorisasjonsheader. En Origin-header KAN oppgis i samsvar med CORS-protokollen. HTTP-metoden som skal brukes finnes i httpMethod-egenskapen på GUI-handlingen. Request body bør være tom.
Håndtering av forespørsler
Endepunktet i ILS-et MÅ verifisere det oppgitte dialogtokenet for å autorisere forespørselen. ILS-et MÅ implementere CORS-protokollen for å støtte nettleserbaserte SBS-er.
Ved vellykket autorisasjon MÅ ILS-et enten:
- Utføre en synkron/blokkerende oppdatering av dialogen i Dialogporten. Ved vellykket respons returneres
204 No Contenttil SBS-et, noe som indikerer at den oppdaterte dialogen er umiddelbart tilgjengelig for ny innlasting. - Utføre en asynkron/ikke-blokkerende oppdatering av dialogen i Dialogporten, via intern kø-/meldingstjeneste eller lignende. Ved vellykket respons returneres
202 Acceptedtil SBS-et, noe som indikerer at dialogen kanskje ikke er oppdatert ennå, men vil være det innen de neste 10 sekundene. - Returnere en feilmelding. Se feilhåndtering for mer informasjon.
Håndtering av svar
Når forespørselen utføres, bør SBS-et indikere overfor sluttbrukeren at en handling pågår, f.eks. ved å vise en spinner eller lignende.
SBS-er BØR bruke GQL-abonnementsmekanismen, og reagere på hendelser som indikerer at dialogen er klar til å lastes inn på nytt. Dette vil da kunne håndtere både synkrone og asynkrone oppdateringer fra ILS-et, altså svar kodet som 204 og 202. Alternativt kan man behandle 204 som en umiddelbar indikasjon på ny innlasting og 202 som et hint om å begynne polling mot Dialogporten etter nye endringer. Dette MÅ IKKE forsøkes oftere enn én forespørsel per sekund.
Når indikasjon på at dialogen er oppdatert er mottatt, bør SBS-et laste hele dialogaggregatet på nytt. For best mulig brukeropplevelse BØR dette ikke innebære full sideoppdatering, men i stedet laste dialogen i bakgrunnen og oppdatere GUI-et tilsvarende, inkludert å fjerne spinneren. SBS-et KAN indikere for brukeren hvilke deler av dialogaggregatet som ble oppdatert ved å sammenligne forrige og ny versjon.
Hvis ingen indikasjon på å laste dialogen på nytt er mottatt innen 10 sekunder, bør en generisk feilmelding vises og spinneren fjernes. Forespørselen MÅ IKKE antas å være avbrutt; i stedet bør brukeren instrueres om å prøve igjen senere og laste siden på nytt, noe som kan gi brukeren den mest oppdaterte tilstanden.
Sekvensdiagram
Dette viser happy path for hvordan skrivehandlinger bør implementeres i sluttbruker- og tjenesteleverandørsystemer.
Feilhåndtering
Se feilhåndtering i FCE-er for mer informasjon.