在Clojure中开发RESTful web服务的良好起点是什么?
我正在研究一种轻量级产品,它至少应该支持以下功能:在Clojure中开发RESTful web服务的良好起点是什么?,rest,web-services,frameworks,clojure,Rest,Web Services,Frameworks,Clojure,我正在研究一种轻量级产品,它至少应该支持以下功能: 支持通过元数据轻松定义操作 将请求中的参数提取到clojure映射或作为函数参数的包装器 支持多种形式的身份验证(基本、表单、cookie) 基于api方法元数据的基本授权 clojure映射中包装的会话对象 来自REPL的实时编码(无需重新启动服务器) 将返回值自动序列化为json和xml 具有良好的(可插入的)url参数处理(例如/action/par1/par2而不是/action?par1=val1&par2=val2) 我知道,为
- 支持通过元数据轻松定义操作
- 将请求中的参数提取到clojure映射或作为函数参数的包装器
- 支持多种形式的身份验证(基本、表单、cookie)
- 基于api方法元数据的基本授权
- clojure映射中包装的会话对象
- 来自REPL的实时编码(无需重新启动服务器)
- 将返回值自动序列化为json和xml
- 具有良好的(可插入的)url参数处理(例如/action/par1/par2而不是/action?par1=val1&par2=val2)
- 参与者/用户数量不断增加的活动项目
- 至少有基本的在线文档和教程
clojure.contrib.lazy XML
(以及帮助程序库clojure.contrib.zip filter.XML
)和(内置的clojure.XML
命名空间目前不是很有用);这些将被串联使用(尽管出于您的目的,前者可能就足够了)1据我所知,在Clojure中构建Web应用程序的唯一单包解决方案是受Rails启发的;不幸的是,我不得不承认,我对它了解不多,因此如果您感兴趣,请点击链接并查看来源wiki&c。在构建我的第一个Clojure rest服务时,我发现自己经常问同样的问题。Clojure工具箱帮了我很多忙:如果您正在寻找一些示例性的、真实的、说明性的代码来帮助您入门,那么您可以研究这个项目,该项目演示了如何使用compojure/ring实现一个非平凡的RESTful web服务,它封装了SQL(postgresql或mysql)和NoSQL(cassandra)、搜索(solr)、缓存(redis)事件日志(kafka)、连接池(c3po)和通过JMX的实时度量
这个博客提供了一个很好的介绍。我在一个不起眼的AWS部署上对该服务运行了一些负载测试,每秒得到大约80个事务,每个事务的平均延迟不到半秒。看看liberator库,它不是一个独立的解决方案,购买非常好的rest服务定义。仅为这个老问题提供一个更新的答案,我认为目前(2018年)提供了一个极好的起点。它使用了前面答案中提到的许多库(ring、compojure等),是模块化的,并且尽可能接近Clojure的“单个包”。特别是对于休息,请看一看。Luminus推荐使用身份验证,我已经成功地将其用于传统的基于会话的身份验证以及Oauth和无状态JWT。谢谢您的回答。这正是我想要的,我宣布这个答案:太棒了。谢谢在这个项目中查看它可能也会有所帮助,它是一个实验性的、有良好文档记录的webshop REST api。它具有您列出的一些功能。