我正在尝试在Clojure中编写一个http文件下载器,而在one of my other questions中,有人评论说使用专用的http客户端库比使用Clojure和Java自己的api编码要好。我做了一些研究并发现了一些,但我无法弄清楚每个的功能,优点和缺点。因此,如果某人可以解释他们的不同之处以及哪一个与我的项目很匹配,那将非常感激。 :-D
最初使用Java的库,以及相应的Clojure包装器:
Apache HttpClient及其Clojure包装clj-http
Apache HttpAsyncClient并且找不到任何Clojure包装器。
Async Http Client及其Clojure包装http.async.client
最后但并非最不重要的是,Clojure库:
答案 0 :(得分:9)
我只能比较http-kit和clj-http。
CLJ-HTTP:
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