Snap


... [ Programmiersprachen und Sprachsysteme ] ... [ Das Snap Framework ] ... [ << Quickstart-Projekt ] ... [ Snaplets >> ] ...

Kommen wir nun zu den Snap Details. Snap selbst basiert auf den sogenannten Iteratees, welche Probleme mit lazyIO beheben. Weiteres zu Iteratees kann man auf folgender Seite lesen: http://www.haskell.org/haskellwiki/Iteratee_I/O .
Es gibt zudem eine eigene Monade, die Snap Monade . Mit Snap kommen auch die sogenannten Snaplets , welche in sich abgeschlossene Anwendungen darstellen. Ein weiterer Bestandteil ist die Templating Engine Heist , die eine Schnittstelle zwischen HTML und Haskell schafft und dem einfachen Bau von Webseiten dient.


Snap Monade

In der Snap Monade laufen die user web handlers. Mit ihr bekommt man zudem zustandsbehafteten Zugriff um HTTP Requests und Responses abzufangen und zu modifizieren. Des weiteren bietet sie
Fehler-, Alternativen- und MonadPlus Semantik, damit Requests nicht behandelt oder an alternative Handler weitergegeben werden. Andere wichtige Funktionen wurden zum größten Teil schon im Abschnitt Code des
Quickstart-Projekt Kapitels behandelt. Für weitere Informationen lohnt sich ein Blick auf den Eintrag in der hackage-db.


Pakete

Snap enthält die folgenden Pakete:

Das Paket snap-core bietet die API als Schnittstelle zum Web-Server und enhält alle Typdefinitionen und Code der Server-agnostisch ist, also keine Kenntnis vom Server hat. Diese API wird von snap-server, einer HTTP Server Bibliothek, unterstützt. Heist ist die von Snap eigene Templating Engine. Es bietet jegliche Funktionalität, um Templates zu rendern und spezielle Tags zu erzeugen, mit denen man im HTML auf Haskell Code zugreifen kann. Als Letztes haben wir noch snap, welches auf den vorigen 3 aufbaut. Es bietet zudem Higher-Level-Abstraktionen, um komplexe Webseiten zu bauen. In snap sind auch das Snap-Executable sowie die Snaplets-API enthalten. Auch sind hier 3 Snaplets für Sessions, Authentifizierung und Heist von den Entwicklern von Snap enthalten.


TLS

Snap unterstützt seit Version 0.3 auch TLS. Dafür wurde zunächst GnuTLS genutzt. Seit Version 0.5.3 kommt OpenSSL zum Einsatz. Dafür muss snap-server mit dem Flag -fopenssl installiert sein. Hattet ihr bereits den snap-server ohne dieses Flag installiert, könnt ihr das Paket sicher über folgenden Aufruf entfernen. Tut ihr dies nicht, kann es zu Konflikten kommen.

1
$ ghc-pkg unregister -f snap-server

Wenn ihr nun einen Server mit TLS starten wollt, geht dies über den folgenden Aufruf:

1
$ ./app --ssl-port=443 --ssl-cert=cert.pem --ssl-key=key.pem

Mit der Funktion rqIsSecure kann nun überprüft werden, ob in einer HTTPS-session gearbeitet wird. Würde man den Server ohne die SSL-Parameter starten, gibt diese Funktion ein false zurück.


... [ Programmiersprachen und Sprachsysteme ] ... [ Das Snap Framework ] ... [ << Quickstart-Projekt ] ... [ Snaplets >> ] ...
generated by schmidt-doku-generator (GitHub)