Что проку начальная точка разработки УСПОКОИТЕЛЬНОГО веб-сервиса в Clojure?

Я изучаю что-то легкое, что, как минимум должен поддерживать следующие функции:

  • Поддержка легкого определения действий через метаданные
  • Обертка, которая извлекает параметры из запроса в карту clojure, или как параметры функции
  • Поддержка нескольких форм аутентификации (основной, формы, cookie)
  • основная авторизация базирующейся метаданных метода API
  • объект сессии перенесен в карту clojure
  • живое кодирование от REPL (никакая потребность перезапустить сервер)
  • автоматическая сериализация возвращаемого значения к json и xml
  • имеет хорошая (сменная) обработка параметра URL (например,/action/par1/par2 вместо / действия? par1=val1&par2=val2)

Я знаю, что относительно легко прокрутить мою собственную микроплатформу для каждой из этих опций, но почему изобретают велосипед, если что-то как этот уже существует? Особенно, если это:

  • Активный проект с возрастающим числом участников/пользователей
  • Имейте, по крайней мере, основную документацию и учебное руководство онлайн.
42
задан Marko 5 July 2010 в 16:05
поделиться

1 ответ

Прежде всего, я думаю, что вы вряд ли найдете единственное упакованное решение для всего этого в Clojure (кроме как в виде библиотеки Java, которая будет использоваться через взаимодействие). То, что становится стандартным веб-стеком Clojure, состоит из ряда библиотек, которые люди смешивают и сопоставляют всевозможными способами (поскольку они, к счастью, обычно идеально совместимы). 1

Вот список некоторых строительных блоков, которые могут оказаться полезными:

  1. Ring - базовая библиотека обработки HTTP-запросов Clojure; все другие библиотеки webby (для написания маршрутов и т. д.), о которых я знаю, совместимы с Ring. Ring активно развивается, у него сильное сообщество, он очень хорошо написан и имеет хороший документ SPEC, в котором подробно описывается его философия дизайна. Эта запись в блоге представляет собой хороший пример того, как ее можно использовать (реагируя на коммиты GitHub).

  2. Sandbar - в настоящее время это библиотека аутентификации, запланированы дополнительные функции; в разработке.

  3. Compojure - зрелая и надежная библиотека, которая обеспечивает хороший DSL для написания маршрутов, которые будут использоваться поверх Ring. Это даст вам удобную обработку параметров URL.

  4. Compojure-rest - «библиотека для создания приложений RESTful поверх Compojure ». Compojure-rest, насколько я могу судить, находится на ранней стадии развития; возможно, вы могли бы увидеть в этом возможность повлиять на его дизайн.: -)

  5. Для работы с XML есть clojure.contrib.lazy-xml (и вспомогательная библиотека clojure.contrib.zip-filter.xml ) и Enlive (встроенное пространство имен clojure.xml в настоящее время не очень удобно); они будут использоваться в тандеме (хотя для ваших целей может быть достаточно первого).

  6. Для JSON есть библиотека в contrib и clojure-json (и я думаю, была по крайней мере еще одна библиотека, которую я сейчас, кажется, забываю ...); выберите тот, который вам больше всего нравится.

Все будут полностью довольны стилем разработки, управляемым REPL (см. Принятый ответ на этот вопрос SO , где описан трюк с кольцом, который здесь очень подходит). Я полагаю, что приведенный выше набор ссылок оставляет несколько белых пятен (в частности, история аутентификации все еще прорабатывается, насколько я могу судить), но, надеюсь, это хорошее начало.


1 Единственное известное мне однопакетное решение для создания веб-приложений на Clojure - это Conjure , вдохновленное Rails; К сожалению, я должен признать, что я мало что знаю об этом, поэтому, если вам интересно, перейдите по ссылке и посмотрите источники, вики и т. д.

54
ответ дан 26 November 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: