Skip to content

gammalost/api-workshop

Repository files navigation

API-workshop

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.

Kom i gang

Vi skal bruke Intellij som IDE, Gradle som byggverktøy og Java 17.

Intellij

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

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.

Java 17

Kotlin kjører på JVM (Java Virtual Machine), så vi trenger Java for å kjøre Kotlin-koden vår.

Kjøre prosjektet

  1. Klon repoet. I terminalen kjør denne kommandoen:
git clone [email protected]:gammalost/api-workshop.git
  1. Åpne intellij og så åpne repoet du klonet

  1. Start applikasjonen og gå til http://localhost:8080/hello og sjekk at du får Hello 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 filen ApiWorkshopApplication.kt og klikke på play-knappen til venstre for fun 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.

  1. 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! 🏃💨

Okey... hva nå?

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.

Enkel skisse over arkitekturen til backenden du skal jobbe med

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.

Sjekk at alt fungerer

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.

Oppgaver

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages