Clojure http客户端库的优缺点

时间:2013-08-10 09:20:54

标签: java http clojure

我正在尝试在Clojure中编写一个http文件下载器,而在one of my other questions中,有人评论说使用专用的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

2 个答案:

答案 0 :(得分:9)

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

CLJ-HTTP:

  • 简单API
  • 仅限HTTP客户端
  • Apache HttpComponents的包装器

HTTP的试剂盒:

  • 专为异步设计
  • HTTP客户端和服务器,功能更强大
  • 客户端API在clj-http之后建模,但它增加了更多的抽象,因此认知负荷更高

如果您关心依赖关系,http-kit可能是更好的选择,因为它是一个独立的库,除了clojure.core之外没有其他依赖关系。因此,它会产生更小的uberjars。有关示例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。

答案 1 :(得分:7)

由于我没有使用所有库,因此我不打算对您发布的库进行全面比较。但我之前使用过http-kit库,这真的很棒。

http-kit易于使用,顺便说一下clj-http库之后的模型,它确实非常高效。虽然这种比较不直接与您的问题有关,但它仍然可以解释一下:TechEmpower Frameworks Round 2