java - Clojure http 客户端库的优缺点

标签 java http clojure

我正在尝试用 Clojure 和 one of my other questions 编写一个 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

最佳答案

我只能比较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/

相关文章:

java - DatagramSocket - 绑定(bind)本地主机套接字

java - 如何在 java 中创建自定义编译器警告?

spring - CommonsMultipartResolver 搞乱了二进制编码

javascript - 如何在 RESTful 系统中使用 HTTP GET 请求传递授权数据?

go - 比较 Clojure 的 go-blocks 与 Go 的 goroutines 的用法

java - java中的repaint()方法没有调用paint()方法?

java - Java 中的静态类有什么用?

java - 删除剩余参数

csv - Clojure - 解析小型 CSV 文件的内存使用情况

clojure - 在clojure中对一系列 bool 值进行分组?