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.
- Start med å klone prosjektet. Husk å klone det repositoryet du har forket!
- Naviger deg til riktig mappe i terminalen og kjør kommandoen
npm installfor å installere avhengigheter. - Kopier filen
.env.exampleog endre navn på kopien så den heter.env— det er her du skal legge miljøvariablene dine. Åpne filen i editoren. - Start med å legge inn navn på riktig template. Hvis gruppa skal jobbe med Gatherly-kundecaset, skal det stå
TEMPLATE=gatherly.jsoni fila, for eksempel. - 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=12345i fila. - Kjør kommandoen
npm startfor å 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
usersmeetupsposts
Stay
usersroomsbookings
Potepass
userspetsittersbookings
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. |