Web-Programmierung
In diesem Tutorial erstellen wir eine kleine Webanwendung in Clojure mit dem HTTP-Toolkit Ring, das die Grundlage vieler Clojure-Webframeworks bildet.
Projekt anlegen
|
|
Abhängigkeiten eintragen
Öffne die Datei project.clj
und ergänze unter :dependencies
:
|
|
Dann:
|
|
HTTP-Handler schreiben
In src/webdemo/core.clj
:
|
|
Starten
|
|
Dann im Browser aufrufen:
http://localhost:3000/
Du solltest „Hallo von Ring!“ sehen.
HTML-Templates mit Selmer
Baue das Beispiel zu einer HTML-Ausgabe mit Template-Rendering aus.
Lösung
Abhängigkeit ergänzen
In project.clj
:
|
|
Dann:
|
|
Template-Datei erstellen
Erstelle unter resources/templates/page.html
:
|
|
Code anpassen
In src/webdemo/core.clj
:
|
|
Test im Browser
|
|
Dann aufrufen: http://localhost:3000
Du solltest eine HTML-Seite mit personalisierter Begrüßung sehen.
Query-Parameter auslesen
Passe den Handler so an, dass er den Namen per URL-Query entgegennimmt.
|
|
Lösung
Code ändern
Damit Ring Query-Parameter wie ?name=Maria
korrekt ausliest, muss eine sogenannte Middleware aktiviert werden. Ring liefert die rohe Query-Zeile zwar als :query-string
, berechnet aber :query-params nur, wenn du wrap-params verwendest. Dazu definieren wir die Anwendung (app) als um handler gewrapptes Ergebnis – das ist das typische Pattern in Ring.
Die Middleware wrap-params ergänzt das Request-Map um :params
und :query-params
(beide als Maps mit Strings).
|
|
(:query-params request)
enthält eine Map aller Query-Parameter als Strings.
Test im Browser
- Aufruf ohne Parameter: http://localhost:3000
- Aufruf mit Namen: http://localhost:3000/?name=Maria
Jetzt wird der angegebene Name im Template angezeigt.
Nächste Schritte
- Query-Parameter auslesen
- Routing mit Compojure