import {
"q2316367743/moonhttp/httpconn",
}| 项 | 说明 |
|---|---|
| HttpConnTransport::new(max_idle_per_host?, idle_timeout_ms?) | 创建传输实现,内置连接池(缺省每 host 留 4 条空闲、保活 30 秒);max_idle_per_host = 0 禁池(每请求一条连接) |
| Transport 实现 | send(PreparedRequest) -> RawResponse:建连 → 写头写体(含上传进度回调)→ 等响应头 → 按分帧交出响应体流 |
| parse_target(url) -> Target | 把绝对 URL 切成拨号要的形状(scheme / use_tls / host / port / 请求目标);非 http(s) 抛 TransportError::Unsupported |
| host_header(target) | Host 头的值(默认端口按 RFC 9112 §7.2 省略) |
// 缺省即自研栈:不传 transport~ 就是 HttpConnTransport
///|
let client = @moonhttp.Client::new()
///|
// 也可以显式注入(与自定义实现走同一入口)
///|
let transport : &@transport.Transport = @httpconn.HttpConnTransport::new()
///|
let explicit = @moonhttp.Client::new(transport~)pub struct HttpConnTransport {
// private fields
}impl Transport for HttpConnTransportasync fn send(self : HttpConnTransport, request : PreparedRequest) -> RawResponse raise TransportErrorasync fn HttpConnTransport::send(self : HttpConnTransport, request : PreparedRequest) -> RawResponse raise TransportErrorpub(all) struct Target {
scheme : String
use_tls : Bool
host : String
port : Int
target : String
} derive(Debug)Install
Download zipaxios 风格的 MoonBit HTTP 客户端:实例与配置合并、四种请求体形态、流式与 SSE、自动重定向