我正在寻找轻量级的东西,至少应该支持以下功能:
支持通过元数据轻松定义操作
将请求中的参数提取到clojure映射或作为函数参数的包装器
支持多种形式的身份验证(基本,表单,cookie)
基于api方法元数据的基本授权
会话对象包装在clojure映射中
从REPL实时编码(无需重启服务器)
将返回值自动序列化为json和xml
有好的(可插入的)url参数处理(例如/ action/par1/par2而不是/ action?par1 = val1&par2 = val2)
我知道为这些选项中的每一个推出自己的微框架相对容易,但是如果像这样的东西已经存在,为什么要重新发明轮子呢?特别是如果它是:
活跃项目的贡献者/用户数量不断增加
至少有在线基础文档和教程.
Michał Marcz.. 54
首先,我认为你不太可能在Clojure中找到一个单独的收缩包解决方案来做所有这些(除了通过互操作使用的Java库的形式).什么成为Clojure的标准Web堆栈包含许多人们以各种方式混合和匹配的库(因为他们很乐意倾向于完全兼容).1
以下是您可能会发现有用的一些构建块的列表:
Ring - Clojure的基本HTTP请求处理库; 我知道的所有其他webby库(用于编写路由和c)都与Ring兼容.Ring正在积极开发,拥有一个强大的社区,编写得非常好,并且有一个很好的SPEC文档,详细说明了它的设计理念.这篇博文提供了一个很好的例子,说明如何使用它(对GitHub提交作出反应).
Sandbar - 目前是一个身份验证库,计划了更多类型的功能; 正在开发中.
Compojure - 一个成熟而强大的库,它提供了一个很好的DSL,用于编写在Ring上使用的路由.这将为您提供良好的URL参数处理.
Compojure-rest - "用于在Compojure之上构建RESTful应用程序的库".据我所知,在早期发展阶段,构成休息; 或许您可能会将此视为影响其设计的机会.:-)
对于处理XML,有clojure.contrib.lazy-xml
(和辅助库clojure.contrib.zip-filter.xml
)和Enlive(内置clojure.xml
命名空间目前不是很有用); 这些将被串联使用(虽然为了你的目的,前者可能就足够了).
对于JSON,在contrib和clojure-json中有一个库(我认为至少还有一个其他库,我现在似乎忘记了......); 选择你最喜欢的那个.
所有人都会对REPL驱动的开发风格感到非常满意(请参阅这个SO问题的接受答案,以获得一个非常符合此目的的Ring技巧).我想上面的链接集合确实留下了一些盲点(特别是,据我所知,身份验证故事仍在解决),但希望这是一个好的开始.
1我知道的唯一用于在Clojure中构建Web应用程序的单包解决方案是Conjure,受Rails的启发; 不幸的是,我不得不承认我对此并不了解,所以如果您有兴趣,请点击链接查看来源,维基和c.
首先,我认为你不太可能在Clojure中找到一个单独的收缩包解决方案来做所有这些(除了通过互操作使用的Java库的形式).什么成为Clojure的标准Web堆栈包含许多人们以各种方式混合和匹配的库(因为他们很乐意倾向于完全兼容).1
以下是您可能会发现有用的一些构建块的列表:
Ring - Clojure的基本HTTP请求处理库; 我知道的所有其他webby库(用于编写路由和c)都与Ring兼容.Ring正在积极开发,拥有一个强大的社区,编写得非常好,并且有一个很好的SPEC文档,详细说明了它的设计理念.这篇博文提供了一个很好的例子,说明如何使用它(对GitHub提交作出反应).
Sandbar - 目前是一个身份验证库,计划了更多类型的功能; 正在开发中.
Compojure - 一个成熟而强大的库,它提供了一个很好的DSL,用于编写在Ring上使用的路由.这将为您提供良好的URL参数处理.
Compojure-rest - "用于在Compojure之上构建RESTful应用程序的库".据我所知,在早期发展阶段,构成休息; 或许您可能会将此视为影响其设计的机会.:-)
对于处理XML,有clojure.contrib.lazy-xml
(和辅助库clojure.contrib.zip-filter.xml
)和Enlive(内置clojure.xml
命名空间目前不是很有用); 这些将被串联使用(虽然为了你的目的,前者可能就足够了).
对于JSON,在contrib和clojure-json中有一个库(我认为至少还有一个其他库,我现在似乎忘记了......); 选择你最喜欢的那个.
所有人都会对REPL驱动的开发风格感到非常满意(请参阅这个SO问题的接受答案,以获得一个非常符合此目的的Ring技巧).我想上面的链接集合确实留下了一些盲点(特别是,据我所知,身份验证故事仍在解决),但希望这是一个好的开始.
1我知道的唯一用于在Clojure中构建Web应用程序的单包解决方案是Conjure,受Rails的启发; 不幸的是,我不得不承认我对此并不了解,所以如果您有兴趣,请点击链接查看来源,维基和c.
在建立我的第一个Clojure休息服务时,我发现自己经常问同样的问题.Clojure工具箱给了我很多帮助:http://www.clojure-toolbox.com/