Clojure http客户端库的优缺点

Jay*_*don 9 java http clojure

我正在尝试在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的试剂盒

Grz*_*ywo 10

我只能比较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
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您更愿意相信经过测试的Apache HttpComponents并且可能更好地支持更大的Java社区,您可以选择clj-http.


Chi*_*ron 7

因为我没有使用所有库,所以我不打算对你发布的库进行全面比较.但是之前我使用过http-kit库,它真的很棒.

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