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