Opgave 1: Refleksion:
· Hvilke mapper/pakker og filer vil I have? Vi vil have en src mappe som vil indholde vores hovedkode, opdelt i controllers, models, routes, middlewares og views. Derudover vil vi have en public til statiske filer til den license.txt fil. Vi vil have en server.js fil som entry point og en app.js til express. Vi følger MVC-mønsteret
· Hvordan sikrer I genbrug af kode? Vi sikrer genbrug af kode ved at opdele funktionaliteten i separate moduler som vi eksporterer og importerer hvor det er nødvendigt. Feks har vi vores character logik i characterModel.js, som bliver genbrugt i charcaterController.js. Vi bruger også middleware som loggingMiddleware, der køres på alle routes, så vi ikke skal skrive logging-logik flere steder. Vi kunne også have oprettet utility-funktioner til validering og error handling så vi ikke skulle gentage den samme kode i flere controllers, men der er kun en.
Til evaluering og feedback
-
Har I selv struktureret jeres projektmappe? Ja, vi har selv struktureret projektmappen, Ved at følge MVC strukturen. Vi har opdelt projektet i logiske mapper som controllers, models, routes, middlewares og views i en src mappe. Derudover har jeg en public mappe til statiske filer.
-
Har I valgt at bruge (eller fravælge) MVC – og hvorfor? Ja, vi har valgt at bruge MVC-mønsteret. Vi synes det giver god mening at adskille data-logikken (Model), forretningslogikken (Controller) og præsentationen (View). Det gør koden mere overskuelig, lettere at vedligeholde og letter at teste. Det er også nemmere at arbejde sammen i et team
-
Er der datavalidering? Ja, der er datavalidering i characterController.js når man opretter en ny karakter. Vi validerer at både name og role er til stede, at navnet er mindst 2 tegn langt, og at rollen er en af de gyldige roller (Jedi, Sith, Rebel, Smuggler, Mandalorian). Hvis valideringen fejler, returneres en 400 status med en fejlbesked.
-
Er der fejlhåndtering? Ja, der er fejlhåndtering flere steder. Vi har en 404-middleware i app.js som fanger requests til routes der ikke eksisterer. I controlleren håndterer vi også fejl som når en karakter ikke findes (404) eller når valideringen fejler (400). Ved file download i routes håndterer vi også fejl hvis filen ikke kan downloades.
-
Er projektet testet med Postman? Ja, vi har testet projektet med Postman. Vi har testet GET /characters for at hente alle karakterer, GET /characters/:id for at hente en specifik karakter, POST /characters for at oprette en ny karakter med korrekte og forkerte data, samt GET /characters/download/license og GET /characters/go-to-luke for at teste de specielle endpoints. Vi har lavet en mappe med screenshots af de tests vi lavet undervejs.
-
Virker jeres frontend ? Ja, frontend virker. Når man åbner index.html og trykker på "Get characters" knappen, hentes alle karakterer fra API'et via fetch og vises i en liste på siden.