3 个版本 (破坏性更改)
0.3.0 | 2020年5月10日 |
---|---|
0.2.0 | 2020年5月10日 |
0.1.0 | 2020年5月10日 |
#161 in #handler
19KB
415 行
异步流代理处理程序。
此库允许使用 Rust 编写反向代理。它基于 async-std 构建,并使用 async-uninet,这使得可以统一处理异步 TCP & Unix 流。
示例
程序
let address = SocketAddr::from_str("127.0.0.1:4444").await.unwrap(); // or `unix:`
let listener = Listener::bind(&address).await.unwrap();
while let Some(stream) = listener.incoming().next().await {
let stream = stream.unwrap();
task::spawn(async move {
let mut router = Router::new(stream);
let mut router = Router::new(stream);
router.parse_request().await.unwrap();
router.set_request_header("Host", "jsonplaceholder.typicode.com:80"); // override header
router.relay_request().await.unwrap();
router.parse_response().await.unwrap();
router.write_response_header("Status", "fast"); // override header
router.relay_response().await.unwrap();
})
}
执行
$ curl -N \
-H "Host: typicode" \
-H "Content-Type: application/json" \
https://127.0.0.1:4444/posts
依赖项
~5–14MB
~168K SLoC