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

Download history 74626/week @ 2024-05-04 73167/week @ 2024-05-11 71926/week @ 2024-05-18 60489/week @ 2024-05-25 63842/week @ 2024-06-01 66866/week @ 2024-06-08 67967/week @ 2024-06-15 69628/week @ 2024-06-22 54842/week @ 2024-06-29 54160/week @ 2024-07-06 55598/week @ 2024-07-13 53582/week @ 2024-07-20 85077/week @ 2024-07-27 79457/week @ 2024-08-03 108449/week @ 2024-08-10 83662/week @ 2024-08-17

365,951 monthly downloads
用于 179 个crate (43直接)

MIT 协议

18KB
264 行代码(不含注释)

u

🔌 ✨

hyperlocal

Hyper 客户端和服务器绑定,用于 Unix域套接字


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 的客户端接口通过工厂方法如 getpostdelete 等使得发送常见的 HTTP 方法(如 GETPOSTDELETE)变得简单。这些方法需要一个可以转换为 hyper::Uri 的参数。

由于 Unix 域套接字不使用解析为 IP 地址的主机名和与网络端口耦合的端口号表示,您不能使用标准的 URL 字符串。相反,请使用 hyperlocal::Uri,它表示域套接字的文件路径以及资源 URI 路径和查询字符串。


Doug Tangren (softprops) 2015-2020

依赖项

~4–12MB
~121K SLoC