当前位置:  开发笔记 > 前端 > 正文

在Clojure中开发RESTful Web服务的良好起点是什么?

如何解决《在Clojure中开发RESTfulWeb服务的良好起点是什么?》经验,为你挑选了2个好方法。

我正在寻找轻量级的东西,至少应该支持以下功能:

支持通过元数据轻松定义操作

将请求中的参数提取到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.



1> Michał Marcz..:

首先,我认为你不太可能在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.



2> Datageek..:

在建立我的第一个Clojure休息服务时,我发现自己经常问同样的问题.Clojure工具箱给了我很多帮助:http://www.clojure-toolbox.com/

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有