Skip to main content
Dat 2. semester
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Undersøg request og response

Nu har du fået din Javalin-server til at køre, og du har besøgt den fra browseren.

Browseren sender en HTTP request til serveren, og serveren sender et HTTP response tilbage.

I de næste opgaver skal du prøve forskellige måder at sende data med en request og undersøge, hvad der sker.

Opgave 1: Path parameters

Forestil dig, at serveren har en række brugere.

Lav en route, der viser alle brugerne:

/users

Lad serveren returnere et antal brugere med ctx.result().

For eksempel:

Sally
Ada
Grace
Alan

Du kan lave din javakode i en metode, som kaldes fra der hvor din routing er:

var app = Javalin.create(config -> {
            // kald koden her
            config.routes.get("/users", ctx -> showUsers(ctx));
        }).start(7070);


 private static void showUsers(Context ctx){
        // lav koden her
 }

Lav derefter en route, hvor brugeren kan angives som en del af URL’en:

/users/Sally

Brug en path parameter til at finde navnet:

ctx.pathParam(...)

Serveren skal nu kun returnere den valgte bruger og fx skrive

Hej Sally. Velkommen til min hjemmeside!

Prøv for eksempel:

/users/Sally
/users/Ada
/users/Grace

Tal sammen:

  • Hvad er en path parameter?
  • Hvor i URL’en ligger parameteren?
  • Hvad sker der, hvis du ændrer navnet i URL’en?

Opgave 2: Query parameters

Lav nu en route:

/users

som kan modtage et navn som en query parameter.

For eksempel:

/users?name=Sally

Brug:

ctx.queryParam(...)

til at hente navnet.

Serveren skal kun returnere den bruger, der matcher navnet.

Prøv for eksempel:

/users?name=Sally
/users?name=Ada

Prøv derefter:

/users

Hvad sker der, når der ikke er angivet en name?

Sammenlign:

/users/Sally

og:

/users?name=Sally

Opgave 3: Se request og response

Nu skal du undersøge de requests, du lige har lavet.

Åbn Developer Tools og vælg Network.

Find requesten /users/Sally og undersøg:

  • Request URL
  • Request Method
  • Request Headers
  • Response Status
  • Response Headers
  • Response

Prøv derefter:

/users?name=Sally

Hvad er forskellen på de to requests?

Opgave 4: Form parameters

Nu skal du sende data til serveren fra en HTML-formular.

1. Lav en HTML-side

Opret en mappe:

src/main/resources/public

Lav en fil i mappen:

greetme.html

Skriv en simpel HTML-side med en formular, hvor brugeren kan indtaste sit navn.

Formularen skal sende en POST-request til:

/greetme

Brug:

<form method="post" action="/greetme">

Inputfeltet skal have:

name="name"

Du kan fx begynde sådan:

<form method="post" action="/greetme">
    <label for="name">Navn:</label>
    <input type="text" id="name" name="name">
    <button type="submit">Sig hej</button>
</form>

2. Gør HTML-siden tilgængelig

Javalin kan servere filer fra mappen public.

Tilføj derfor til din Javalin-konfiguration:

config.staticFiles.add("/public");

Du kan nu åbne siden i browseren på:

http://localhost:7070/greetme.html

3. Lav POST-routen

Lav en POST-route til /greetme.

I route-handleren skal du hente navnet fra formularen med:

ctx.formParam("name")

Send derefter navnet tilbage med:

ctx.result(...)

Hvis brugeren skriver Sally, skal serveren svare:

Hej Sally

Prøv forskellige navne.

4. Undersøg requesten

Åbn Developer Tools → Network.

Send formularen igen.

Find POST-requesten til /greetme.

Undersøg:

  • Hvilken HTTP method blev brugt?
  • Hvilken URL blev requested?
  • Hvor kan du finde det navn, du skrev i formularen?
  • Hvad er forskellen på denne request og requesten fra opgave 1 og 2?

Opgave 5: Undersøg en rigtig hjemmeside

Vælg en hjemmeside, du selv bruger.

Åbn Developer Tools → Network og genindlæs siden.

Find tre forskellige requests.

For hver request skal du undersøge:

  • Hvilken URL bliver requested?
  • Hvilken HTTP method bruges?
  • Hvilken statuskode får du?
  • Hvad indeholder response?
  • Kan du se noget interessant i request- eller response-headers?

Prøv at finde ud af, hvad de tre requests bruges til.