Java/Scala 的 HTTP parser/renderer 库

HTTP parser/renderer library for Java/Scala

我正在寻找一个可以连接到字节流的异步 HTTP parsing/rendering 库(即不依赖于直接套接字访问并且不创建/期望实际的网络连接)。

基本上给定一个字节流,我希望能够从中解析 HTTP 请求,可能操纵某些东西并将其呈现为字节字符串。请求和响应。非常适合严格和分块的请求。

原则上,操作 Http 代理可在输入流、java 流、反应流或类似的东西(客户端和服务器)上工作。

像这样:

stream of bytes <-> HttpLib <-> customCode <-> HttpLib <-> stream of bytes

到目前为止我看了

欢迎提出任何建议!

更新

关于 Akka HTTP:我指的是直接在 serverLayer 蓝图中处理的 onUpstreamFailure 行为。我想这是最有效/最方便的默认设置,但是在 serverLayer 对此类错误做出反应(可选)之后,流阶段如何传播错误会更加灵活。

-> Bytes -> serverLayer -> customCode
                 |
  <- (error response)

以防有人偶然发现问题

  • 一般来说,Akka HTTP 是一个不错的选择,只是对我们来说效果不是很好(见问题)
  • Netty 提供了 EmbeddedChannels,它允许在不绑定到套接字的情况下执行 HTTP 解析器/渲染器/解码器。我认为这主要用于测试,但它不在 .test 包中,也可用于实现更高级别的编解码器(Netty 3.x 文档)