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:接近我需要的但错误行为是硬编码的
- Appache Http 组件:似乎适合与套接字一起使用,可以访问较低级别,但感觉不像预期用途
- 别人喷,netty不知道有没有什么经验?
欢迎提出任何建议!
更新
关于 Akka HTTP:我指的是直接在 serverLayer 蓝图中处理的 onUpstreamFailure 行为。我想这是最有效/最方便的默认设置,但是在 serverLayer 对此类错误做出反应(可选)之后,流阶段如何传播错误会更加灵活。
-> Bytes -> serverLayer -> customCode
|
<- (error response)
以防有人偶然发现问题
- 一般来说,Akka HTTP 是一个不错的选择,只是对我们来说效果不是很好(见问题)
- Netty 提供了 EmbeddedChannels,它允许在不绑定到套接字的情况下执行 HTTP 解析器/渲染器/解码器。我认为这主要用于测试,但它不在 .test 包中,也可用于实现更高级别的编解码器(Netty 3.x 文档)
我正在寻找一个可以连接到字节流的异步 HTTP parsing/rendering 库(即不依赖于直接套接字访问并且不创建/期望实际的网络连接)。
基本上给定一个字节流,我希望能够从中解析 HTTP 请求,可能操纵某些东西并将其呈现为字节字符串。请求和响应。非常适合严格和分块的请求。
原则上,操作 Http 代理可在输入流、java 流、反应流或类似的东西(客户端和服务器)上工作。
像这样:
stream of bytes <-> HttpLib <-> customCode <-> HttpLib <-> stream of bytes
到目前为止我看了
- Akka Http:接近我需要的但错误行为是硬编码的
- Appache Http 组件:似乎适合与套接字一起使用,可以访问较低级别,但感觉不像预期用途
- 别人喷,netty不知道有没有什么经验?
欢迎提出任何建议!
更新
关于 Akka HTTP:我指的是直接在 serverLayer 蓝图中处理的 onUpstreamFailure 行为。我想这是最有效/最方便的默认设置,但是在 serverLayer 对此类错误做出反应(可选)之后,流阶段如何传播错误会更加灵活。
-> Bytes -> serverLayer -> customCode
|
<- (error response)
以防有人偶然发现问题
- 一般来说,Akka HTTP 是一个不错的选择,只是对我们来说效果不是很好(见问题)
- Netty 提供了 EmbeddedChannels,它允许在不绑定到套接字的情况下执行 HTTP 解析器/渲染器/解码器。我认为这主要用于测试,但它不在 .test 包中,也可用于实现更高级别的编解码器(Netty 3.x 文档)