Clojure HTTP客户端库的优缺点

12
我想在Clojure中编写一个http文件下载器,在我的另一个问题中,有人评论说使用专用的http客户端库比使用Clojure和Java自己的api更好。我进行了一些研究,找到了一些库,但是我无法确定每个库的特点、优缺点。如果有人能够解释它们之间的不同,并推荐一个适合我的项目的库,那将不胜感激。 :-D 最初为Java编写的库以及对应的Clojure封装: Apache HttpClient及其Clojure封装clj-http Apache HttpAsyncClient,未能找到任何Clojure封装。

Netty和Clojure“包装器”是Aleph,我猜对了吗?

Async Http Client和它的Clojure包装器http.async.client

最后但并非最不重要的是一本Clojure库:

http-kit


顺便说一下,我并没有建议Clojure API比Java API更好。我所说的是Clojure API感觉更自然! :) - Chiron
@Chiron 谢谢你加上了那个!:-D - Jay Somedon
2个回答

13

我只能比较http-kit和clj-http。

clj-http:

  • 简单的API
  • 只有HTTP客户端
  • Apache HttpComponents的包装器

http-kit:

  • 设计用于异步操作
  • HTTP客户端和服务器,更强大
  • 客户端API模仿clj-http,但添加了更多抽象,因此认知负荷更高

如果您关心依赖项,则http-kit可能是更好的选择,因为它是一个独立的库,没有除clojure.core之外的其他依赖项。因此,它生成更小的uberjar。对于示例HTTP GET项目:

clj-http:

1.2M    clj-http-test-0.1.0-SNAPSHOT.jar
6.7M    clj-http-test-0.1.0-SNAPSHOT-standalone.jar

http-kit:

65K     http-kit-test-0.1.0-SNAPSHOT.jar
3.8M    http-kit-test-0.1.0-SNAPSHOT-standalone.jar

另一方面,如果你更喜欢信任经过实战检验的Apache HttpComponents并且可能获得更好的Java社区支持,那么你可以选择clj-http。


7
我不会对您所提到的所有库进行详细比较,但我之前使用过http-kit库,它非常好用。
http-kit易于使用,顺便模仿clj-http库,并且性能确实很好。虽然这个比较并没有直接回答您的问题,但它仍然可以帮助您了解更多信息:TechEmpower Frameworks Round 2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接