|
|
## Introduksjon
|
|
|
|
|
|
Servertjenester opfatter en rekke oppgaver, fra levering av nettsider og e-post til lagring og administrasjon av filer eller kjøring av applikasjoner (Monteclaro, Allan J, 2023). Disse serverne fungerer på en klient-server-modell, der klienter ber om spesifikke tjenester eller ressurser, og serveren svarer på disse forespørslene.
|
|
|
|
|
|
## Databaseserver
|
|
|
|
|
|
Dette prosjektet bruker en MySQL database for lagring av data. Her lagres både data til mock banken og sparesti sine egne tabeller. Se [ER-diagramet](Databasemodell) for database oppsett. Databasen er deployert på en virtuel maskin hostet av NTNU Trondheim. Prosjektet er satt til å benytte denne databasen ved standard, men har også mulighet til å kjøre databasen lokalt. Se [installasjosnguiden](Installasjon) for å endre til lokal database. JPARepository-modulen, støttet av Hibernate, benyttes i backend for å utføre spørringer mot databasen. Hibernate gjør det enklere å utføre databaseoperasjoner ved å tilby objekt-relasjonell mapping og automatisk håndtering av SQL-spørringer (Hibernate.org, 2024).
|
|
|
|
|
|
## Webserver
|
|
|
For backend brukes Spring Boot rammeverk for å kjøre en localhostet server med standard port 8080. Frontend benytter Node.js for å starte klienten lokalt. Frontend (klient) og backend (server) kommuniserer via HTTP-protokollen. Der frontend sender HTTP-forespørsler til backend som behandler forespørselen og sender et svar tilbake. Webserveren (backend) er satt opp med kontroller klasser som definerer endepunktene klienter (frontend) kan koble seg til. Applikasjonen bruker token autentisering ved hjelp av JWT-tokens, auth0 og spring-security.
|
|
|
|
|
|
For backend brukes Spring Boot rammeverk for å kjøre en localhostet server med standard port 8080. Frontend benytter Node.js for å starte klienten lokalt. Frontend (klient) og backend (server) kommuniserer via HTTP-protokollen. Der frontend sender HTTP-forespørsler til backend som behandler forespørselen og sender et svar tilbake. Webserveren (backend) er satt opp med kontroller klasser som definerer endepunktene klienter (frontend) kan koble seg til. Applikasjonen bruker token autentisering ved hjelp av JWT-tokens, auth0 og spring-security.
|
|
|
|
|
|
> Applikasjonen benytter ikke krypterte HTTP-forespørsler. Vær obs på at data sendes i klartekst mellom klient og server, og er derfor ikke passende for sensitiv data overføringer i nåværende versjon.
|
|
|
|
|
|
## REST-tjenester
|
|
|
|
|
|
Med Spring Boot kan du implementere REST-tjenester på en enkel og effektiv måte. REST står for REpresentational State Transfer og er en arkitektonisk mønster innenfor informatikk. REST har blitt standard for web-applikasjoner fordi de er lett å bygge og bruke. Innenfor REST så kan alt ressurser identifiseres med en unik URI (Unique Resource Identifier). Dette kan være objekter, data, filer som klienten kan få tilgang til. For å utføre handlinger på disse ressursene så kan man bruke HTTP-metoder som GET, POST, PUT og DELETE. (Codecademy Team, u.d.)
|
|
|
|
|
|
## Docker
|
|
|
Applikasjonens backend kan kjører ved hjelp av Docker. Dette muliggjør enkel og forutsigbar kjørring av prosjektet uten ytterligere nødvendigheter enn Docker. [Installasjonsguiden](Installasjon) viser både hvordan programmet kan kjøres via en Docker container, men også instruksjoner for kjøring uten Docker. Den lokale databasen kjøres også ved hjelp av en Docker container.
|
|
|
|
|
|
Applikasjonens backend kan kjører ved hjelp av Docker. Dette muliggjør enkel og forutsigbar kjørring av prosjektet uten ytterligere nødvendigheter enn Docker. [Installasjonsguiden](Installasjon) viser både hvordan programmet kan kjøres via en Docker container, men også instruksjoner for kjøring uten Docker. Den lokale databasen kjøres også ved hjelp av en Docker container.
|
|
|
|
|
|
## Swagger
|
|
|
|
|
|
Verktøyet swagger benyttes for å holde oversikt over API endepunktene for prosjektet.
|
|
|
|
|
|
- Trykk [her](https://app.swaggerhub.com/apis-docs/jensmj/Sparesti-backend/v1) for å se dokumentasjonen.
|
|
|
- Eventuelt følg [installasjonsguiden](Installasjon) for å kjøre dokumentasjonen lokalt.
|
|
|
|
|
|
</details>
|
|
|
|
|
|
## Ressurser
|
|
|
|
|
|
- Databasemodell: https://gitlab.stud.idi.ntnu.no/scrum_team_3/idatt2106_2024_03_backend/-/wikis/Databasemodell
|
|
|
- Docker: https://www.docker.com/
|
|
|
- MySQL: https://www.mysql.com/
|
... | ... | @@ -28,6 +37,7 @@ Verktøyet swagger benyttes for å holde oversikt over API endepunktene for pros |
|
|
- Swagger: https://swagger.io/
|
|
|
|
|
|
## Kilder
|
|
|
|
|
|
- Monteclaro, Allan J (2023) _What Is a Server? | Definition, Types, and Features_ Tilgjengelig fra: https://www.serverwatch.com/guides/what-is-a-server/ (Hentet: 08.05.2024)
|
|
|
- Hibernate.org (2024) _Hibernate ORM, Your relational data. Objectively._ Tilgjengelig fra:
|
|
|
https://hibernate.org/orm/ (Hentet: 08.05.2024) |
|
|
\ No newline at end of file |
|
|
- Hibernate.org (2024) _Hibernate ORM, Your relational data. Objectively._ Tilgjengelig fra: https://hibernate.org/orm/ (Hentet: 08.05.2024)
|
|
|
- Codecademy Team (u.d.) What is REST? Tilgjengelig fra: https://www.codecademy.com/article/what-is-rest (Hentet: 15.05.2024) |
|
|
\ No newline at end of file |