Возможно, мой ответ на вопрос Что является хорошей отправной точкой для разработки веб-службы RESTful в Clojure?, вопрос о SO может вам помочь. В нем упоминаются некоторые важные веб-библиотеки для Clojure (со ссылками и краткими резюме). Ключевой момент, который я хотел бы здесь повторить, изложен в первом абзаце этого ответа:
Во-первых, я думаю, что вы вряд ли найдете единственное решение в термоусадочной упаковке для выполнения всего этого в Clojure (кроме как в виде библиотеки Java, которая будет использоваться через взаимодействие). То, что становится стандартным веб-стеком Clojure, состоит из ряда библиотек, которые люди смешивают и сопоставляют всевозможными способами (поскольку они, к счастью, обычно идеально совместимы).
К этому я бы добавил, что вам, вероятно, не следует ожидать, что вы будете обрабатывать вещи с помощью своего рода «поток приложений», который вы могли бы знать по Java (или, если вы считаете, что вам это действительно нужно, вам, вероятно, придется свернуть свою собственную библиотеку для ее поддержки. !). Однако это нормально, поскольку люди, похоже, очень довольны подходом Ring, ориентированным на работу с обработчиком и ориентированным на промежуточное программное обеспечение более высокого порядка.
Чтобы устранить пули:
Шаблон ответа:
Существует ряд решений для Clojure, включая Enlive и Hiccup (Enlive - очень мощный механизм очистки / шаблонов / преобразования HTML; Hiccup - это DSL для написания HTML в Clojure с прекрасное свойство, которое он отображает быстро). Кроме того, это, вероятно, то место, где имеет смысл перейти на Java и использовать что-то вроде, скажем, StringTemplate а>. У этого есть даже хорошая сторона, препятствующая смешиванию шаблонов и логики! (Я считаю, что Стюарт Хэллоуэй упомянул, что его компания Relevance использует эту стратегию в своей работе и добивается больших успехов в этом.)
HTTP-сеансы
Полагаю, это будет Sandbar. Автор начал серию сообщений в блоге об этом, что выглядит очень многообещающим.
REST с автоматическим отображением URL-адресов в функции-действия и параметры
Это Ring & Compojure и / или Усы. Увидеть ниже.
HTML-формы (параметры доступны как карта, обработка ошибок, проверка)
Как указано выше.
Поток приложения (известный из фреймворков Java - обработчики запросов возвращают идентификаторы действий, которые в конечном итоге обрабатываются модулями визуализации)
Как упоминалось выше, на самом деле это не то, что люди обычно делают в Clojure.
В качестве отправной точки в изучении веб-стека Clojure это кольцо учебник от автора Ring Марка МакГранагана очень полезен. Автор Compojure Джеймс Ривз имеет некоторая документация по Compojure. Возможно, мой недавний ответ на Что «большая идея», стоящая за маршрутами самообладания? тоже может помочь. Источники Ring также включают отличный документ SPEC.
person
Michał Marczyk
schedule
23.08.2010