CrudOps

CrudOps er APIet vi skal bruke i Operasjonell frontendutvikling ved Gokstad Akademiet, våren 2026. Det fungerer på tvers av kundecaser, og er laget for at dataene dere brukes skal kunne endres i henhold til de kravene dere har for deres egen løsning.

Komme i gang

Når dere skal begynne med løsningsutvikling, må dere ta en kopi av dette repositoryet som dere kan endre innad i gruppa. Den enkleste måten å gjøre dette på er å ta en fork i GitHub; dette kopierer koden inn i et eget repository under gruppas kontroll. Gå til GitHub-siden til CrudOps og trykk deretter på Fork-knappen øverst på siden. Følg anvisningene deretter.

Dere må ha Node.js og npm installert for å kunne kjøre i gang koden til APIet. Gå til Node.js sin nettside og følg bruksanvisningen for å installere på ditt operativsystem. Når du har installert og verifisert at du får kjørt node -v og npm -v i terminalen din, er du klar til å sette opp CrudOps.

  1. Start med å klone prosjektet. Husk å klone det repositoryet du har forket!
  2. Naviger deg til riktig mappe i terminalen og kjør kommandoen npm install for å installere avhengigheter.
  3. Kopier filen .env.example og endre navn på kopien så den heter .env — det er her du skal legge miljøvariablene dine. Åpne filen i editoren.
  4. Start med å legge inn navn på riktig template. Hvis gruppa skal jobbe med Gatherly-kundecaset, skal det stå TEMPLATE=gatherly.json i fila, for eksempel.
  5. Legg så inn ønsket API-nøkkel. Denne skal brukes når dere oppretter data i APIet. Hvis nøkkelen skal være "12345", skal det stå API_KEY=12345 i fila.
  6. Kjør kommandoen npm start for å starte APIet. Dersom alt er riktig satt opp og installert, kjører applikasjonen nå på port 3000 og du er klar til å bruke APIet.

API-dokumentasjon

Hvilke ressurser som er tilgjengelige i APIet kommer an på hvilket kundecase dere har valgt. Dere må studere JSON-filen for å se hvilke ressurser dere har tilgang til. En ressurs er et array med objekter som representerer dataene i applikasjonen. I utgangspunktet har kundecasene tilgang til følgende ressurser:

Gatherly

Stay

Potepass

I tabellen under har vi dokumentert de ulike endepunktene APIet lager basert på JSON-strukturen. Når vi bruker et kodenavn med kolon foran, for eksempel :resource eller :id, skal du bytte ut disse med den faktiske informasjonen du trenger. Eksempel: hvis URLen er /api/:resource/:id, og du ønsker å hente elementet med id nummer 1 fra users-arrayet, blir den ferdige URLen /api/users/1.

HTTP-verb URL Beskrivelse
GET /api/:resource Henter alle elementer av den angitte ressurstypen. Kan returnere et tomt array om ingen elementer finnes, eller 404 om ressursen ikke finnes.
GET /api/:resource/:id Henter et bestemt element av den angitte ressurstypen basert på id. Returnerer 404 om et element med den angitte iden ikke finnes.
POST /api/:resource Oppretter et nytt element av angitt type ressurs. Request headers skal inneholde API-nøkkel. Request body skal inneholde en JSON-string med det nye objektet. Du skal ikke angi id, APIet oppretter denne automatisk. Returnerer 401 og en feilmelding om du ikke har lagt ved riktig API-nøkkel i request headers. Returnerer 200 og en kopi av det opprettede objektet om forespørselen ble godkjent.
PUT /api/:resource/:id Oppdaterer angitt ressurs basert på id. Request headers skal inneholde API-nøkkel. Request body skal inneholde en JSON-string med det nye objektet, og APIet erstatter det gamle objektet med det nye. Returnerer 401 og en feilmelding om du ikke har lagt ved riktig API-nøkkel i request headers. Returnerer 200 og en kopi av det opprettede objektet om forespørselen ble godkjent. Returnerer 404 om objektet ikke finnes.
PATCH /api/:resource/:id Oppdaterer angitt ressurs basert på id. Request headers skal inneholde API-nøkkel. Request body skal inneholde en JSON-string med det nye objektet, og APIet oppdaterer bare feltene etter behov fremfor å erstatte hele objektet. Returnerer 401 og en feilmelding om du ikke har lagt ved riktig API-nøkkel i request headers. Returnerer 200 og en kopi av det opprettede objektet om forespørselen ble godkjent. Returnerer 404 om objektet ikke finnes.
DELETE /api/:resource/:id Sletter angitt ressurs basert på id. Request headers skal inneholde API-nøkkel. Returnerer 200 dersom slettingen ble fullført. Returnerer 401 og en feilmelding om du ikke har lagt ved riktig API-nøkkel i request headers. Returnerer 404 om objektet ikke finnes.

I tillegg finnes det noen spesielle endepunkter som kan være nyttige i utviklingsløpet og for testing av applikasjonen dere lager:

HTTP-verb URL Beskrivelse
POST /api/reset Sletter alle data i APIet og gjenoppretter templaten. Dette er nyttig om templaten har endret seg eller dere får feil med dataene som ligger i APIet. Request headers skal inneholde API-nøkkel. Returnerer 200 dersom gjenopprettingen ble fullført. Returnerer 401 dersom angitt API-nøkkel er feil eller mangler i headers.
Alle /api/status/:code Returnerer en respons med den angitte statuskoden. Nyttig for debugging av applikasjonen der du trenger å sjekke hvordan frontenden reagerer på en bestemt statuskode, for eksempel 404 eller 500. API-nøkkel må angis i request headers for alle HTTP-verb annet enn GET.
Alle /api/delay/:ms Sender en respons etter angitt antall millisekunder. Dette er nyttig for å teste frontenden når APIet bruker lang tid på å svare, for eksempel til å teste spinnere/loadere. API-nøkkel må angis i request headers for alle HTTP-verb annet enn GET.
GET /api/db Returnerer alle data som ligger i APIet som ett stort JSON-objekt. Nyttig for å få oversikt over hvordan datastrukturen ser ut og hvilke data som ligger i APIet.