Peut-être ma réponse à la Quel est le bon point de départ pour développer un service web RESTful en Clojure ? La question sur le SO pourrait vous être utile. Elle mentionne quelques bibliothèques web importantes pour Clojure (avec des liens et de courts résumés). Le point clé que je voudrais rappeler ici est énoncé dans le premier paragraphe de cette réponse :
Tout d'abord, je pense qu'il est peu probable que vous trouviez une solution unique et compacte pour faire tout cela en Clojure (sauf sous la forme d'une bibliothèque Java à utiliser par interopérabilité). Ce qui est en train de devenir la pile Web standard de Clojure comprend un certain nombre de bibliothèques que les gens mélangent et associent de toutes sortes de façons (puisqu'elles ont heureusement tendance à être parfaitement compatibles).
J'ajouterais à cela que vous ne devez probablement pas vous attendre à gérer les choses avec le type de "flux d'application" que vous connaissez de Java (ou si vous pensez en avoir vraiment besoin, vous devrez probablement créer votre propre librairie pour le supporter !) Mais ce n'est pas grave, car les gens semblent être très satisfaits de l'approche de Ring, qui consiste à utiliser un gestionnaire comme une fonction et un intergiciel d'ordre supérieur.
Pour répondre à vos balles :
-
Modèle de réponse :
Il existe un certain nombre de solutions spécifiques à Clojure, notamment Enlive y Hiccup (Enlive est un moteur très puissant de scraping / templating / transformation de HTML ; Hiccup est un DSL pour écrire du HTML en Clojure avec la propriété intéressante qu'il restitue rapide ). De plus, il s'agit probablement d'un endroit où il est parfaitement judicieux de passer à Java et d'utiliser quelque chose comme, par exemple, , StringTemplate . Cela a même le bon côté de décourager le mélange de modèles et de logique ! (Je crois que Stuart Halloway a mentionné que Relevance -- sa société -- utilise cette stratégie dans son travail et connaît un grand succès).
-
Sessions HTTP
Ce serait Sandbar Je suppose. L'auteur a commencé une série d'articles de blog à ce sujet qui semble très prometteur.
-
REST avec mise en correspondance automatique des URL avec les fonctions d'action et les paramètres.
C'est Bague & Compojure et/ou Moustache . Voir ci-dessous.
-
Formulaires HTML (paramètres disponibles comme carte, gestion des erreurs, validation)
Comme ci-dessus.
-
Flux d'applications (connu des cadres Java - les gestionnaires de demandes renvoient des identifiants d'actions qui sont finalement traités par les moteurs de rendu).
Comme mentionné ci-dessus, ce n'est pas vraiment quelque chose que les gens ont tendance à faire en Clojure.
Comme point de départ dans l'apprentissage de la pile web Clojure, ce tutoriel sur les anneaux par Bague de l'auteur Mark McGranaghan est très utile. Compojure L'auteur James Reeves a quelques documents sur Compojure. Peut-être ma réponse récente à la Quelle est la "grande idée" derrière les routes compojurées ? Cette question pourrait également vous aider. Les sources de Ring comprennent également un excellent document SPEC.