11个版本 (破坏性更新)
0.9.1 | 2024年7月22日 |
---|---|
0.8.0 | 2020年12月28日 |
0.7.0 | 2020年3月22日 |
0.6.0 | 2018年9月23日 |
0.1.0 | 2016年1月3日 |
#58 in Unix API
365,951 monthly downloads
用于 179 个crate (43直接)
18KB
264 行代码(不含注释)
u
hyperlocal
Hyper是一个稳定的 Rust HTTP客户端和服务器工具包。 Unix域套接字 提供了一种主机本地进程间通信机制。 hyperlocal
在Hyper构建Unix域套接字HTTP客户端和服务器接口的基础上进行扩展和补充。
这在您需要限制对当前主机的访问时很有用,在这种情况下,不需要打开和公开tcp端口。提供此类主机本地接口的Unix守护进程示例包括 Docker,一个进程容器管理器。
安装
将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
hyperlocal = "0.9"
用法
服务器
典型的服务器可以通过创建一个 tokio::net::UnixListener
并使用 hyper::service::service_fn
创建一个请求/响应处理函数,在循环中接受连接,并通过 hyper::server::conn::http1::Builder::new().serve_connection()
将 UnixStream
连接到它来构建。
hyperlocal
提供了一个扩展 trait UnixListenerExt
,并实现了这一功能。
示例代码位于 examples/server.rs,可以通过以下命令运行:cargo run --example server
为了测试您的服务器是否正常工作,您可以使用现成的工具,如 curl
$ curl --unix-socket /tmp/hyperlocal.sock localhost
It's a Unix system. I know this.
客户端
hyperlocal
还提供了从 hyper-utils
包的 Client
接口编写基于 Unix 域套接字的 HTTP 客户端的绑定。
示例代码位于 examples/client.rs,可以通过以下命令运行:cargo run --example client
Hyper 的客户端接口通过工厂方法如 get
、post
、delete
等使得发送常见的 HTTP 方法(如 GET
、POST
、DELETE
)变得简单。这些方法需要一个可以转换为 hyper::Uri
的参数。
由于 Unix 域套接字不使用解析为 IP 地址的主机名和与网络端口耦合的端口号表示,您不能使用标准的 URL 字符串。相反,请使用 hyperlocal::Uri
,它表示域套接字的文件路径以及资源 URI 路径和查询字符串。
Doug Tangren (softprops) 2015-2020
依赖项
~4–12MB
~121K SLoC