Backendtjenester kommer i mange former og fasonger, fra kjernebanksystemer som holder styr på kontoen din til webservere som håndterer forespørsler og returnerer informasjon. Vi skal i denne workshopen se næmere på sistnevnte og sammen designe noen enkle API.
Vi skal bruke Intellij som IDE, Gradle som byggverktøy og Java 17.
Intellij er en IDE (Integrated Development Environment) som er laget av JetBrains. Den er veldig populær blant Java-utviklere og har mange funksjoner som gjør det enklere å utvikle kode.
Hvis dere ikke allerede har installert Intellij kan dere laste det ned her. Velg community edition, som er gratis, hvis dere ikke har en lisens for ultimate edition.
Gradle er et byggverktøy som brukes til å bygge og kjøre prosjekter. Det er et alternativ til Maven, som er et annet populært byggverktøy. Gradle blir installert av Intellij som en del av prosjektet, så det er ikke nødvendig å installere det separat.
Kotlin kjører på JVM (Java Virtual Machine), så vi trenger Java for å kjøre Kotlin-koden vår.
- Klon repoet. I terminalen kjør denne kommandoen:
git clone [email protected]:gammalost/api-workshop.git
- Åpne intellij og så åpne repoet du klonet
- Start applikasjonen og gå til
http://localhost:8080/hello
og sjekk at du fårHello world!
tilbake- Nb: det kan ta litt tid for gradle å laste ned pakker som trengs for å kjøre applikasjonen.
- Hvis
ApiWorkshopApplication
ikke vises kan du åpne filenApiWorkshopApplication.kt
og klikke på play-knappen til venstre forfun main
. - Hvis dere ikke allerede har Java installert er det mulig å gjøre det via Intellij.
Velg
File
->Project Structure
->Project
->SDK
->Add SDK
->Download JDK
og velg versjon 17. Hvis dette ikke fungerer, sjekk om det er en annen versjon av Java som er installert i terminalen (java --version
) og endre denne til Java 17.
- Sjekk at du får kjørt testene til oppgave 1 (høyreklikk på filen og så kjør den)
Et voilà! Om alt har gått knirkefritt så skal du nå være klar til å ta fatt på oppgavene! 🚀 Hvis ikke så rop ut, så kommer vi og hjelper! 🏃💨
Det er satt opp tre filer,
UserController,
UserService og
UserRepository.
UserController
og UserService
er foreløpig tomme klasser - det er disse du skal legge til funksjonalitet i gjennom oppgavene.
For å gjøre det litt lettere er UserRepository
satt opp på forhånd med de funksjonene du skal trenge for å hente data fra databasen.
Du trenger ikke å gjøre noen endringer i UserRepository
.
For en liten recap av presentasjonen så er:
- Controller der vi definerer API-et (eksempel i UserController med
helloWorld
-funksjonen) - Service der vi legger logikk (eksempel i UserService med
helloWorld
-funksjonen)) - Repository der vi jobber mot persistent lagring (les: databaser)
Databasen som er satt opp er en enkel in memory H2-database. For testene er denne denne fyllt med litt innhold. Akkurat hva kan du se i data.sql.
Før vi begynner med oppgavene, sjekk at alt fungerer som det skal. Prøv å gjøre en endring å se at endringen blir reflektert i applikasjonen.
Du kan f.eks. endre helloWorld
-funksjonen i UserController.kt
til å returnere noe annet enn Hello world!
og se at endringen blir reflektert i applikasjonen.
Merk at du må restarte applikasjonen for at endringene skal bli reflektert.
Endre tilbake til Hello world!
før du går videre, så du ikke får feil i testene.
Vi har lagd denne workshoppen slik at du skal kunne kjøre et test for hver oppgave for å sjekke at du har gjort oppgaven riktig. Når du begynner på en oppgave så burde testene for den oppgaven feile, og når du har gjort oppgaven riktig så skal testene kjøre grønt.
Under er en liste over oppgavene med tilhørende tema