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.
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?
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
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?
Nu skal du sende data til serveren fra en HTML-formular.
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>
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
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.
Å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?
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.