我正在尝试用 Clojure 和 one of my other questions 编写一个 http 文件下载器,有人评论说使用专用的http客户端库比用Clojure和Java自己的api编码要好。我做了一些研究并找到了一些,但我无法弄清楚每个的特点、优缺点。因此,如果有人可以解释它们的不同之处以及哪一个与我的项目很匹配,我们将不胜感激。 :-D
最初在 Java 中的库和相应的 Clojure 包装器:
Apache HttpClient及其 Clojure 包装器 clj-http
Apache HttpAsyncClient并且找不到任何 Clojure 包装器。
Async Http Client及其 Clojure 包装器 http.async.client
最后但同样重要的是,一个 Clojure 库:
最佳答案
我只能比较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。
关于java - Clojure http 客户端库的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18160492/